sql server 如何查找最后一条插入的记录

walfud 2010-10-21 07:24:26
我在一个没有primary key 的表中, 想直接查询最后一条插入的语句, 请问如何写呢?
...全文
518 15 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
我心依旧2014 2010-10-22
  • 打赏
  • 举报
回复
[Quote=引用 4 楼 claro 的回复:]
最后一条插入??

还是做个日志表吧。
[/Quote]
怎么做日志表啊!!

you_tube 2010-10-22
  • 打赏
  • 举报
回复
用cdc 技术捕捉日志

SQL Server 2008: Change Data Capture (CDC)
http://weblogs.sqlteam.com/derekc/archive/2008/01/28/60469.aspx

如果没有自增标识/时间 标识自增列,以上方法都是扯谈
coleling 2010-10-22
  • 打赏
  • 举报
回复
还有一个办法:

--建立一个专门取最后一行的存储过程
IF OBJECT_ID('ReturnTableLastRow','') IS NOT NULL
DROP PROC ReturnTableLastRow
GO

-- =============================================
-- title: 利用动态游标,取表的最后插入的行
-- author: coleling
-- date: 2010-10-22
-- memo: 本过程只对没有主键和聚集索引的表有效
-- =============================================

CREATE PROC ReturnTableLastRow
(
@TableName Varchar(50)
)
AS
BEGIN
EXECUTE ('DECLARE curLast CURSOR DYNAMIC FOR SELECT * FROM ' + @TableName)
OPEN curLast
FETCH LAST FROM curLast

CLOSE curLast
DEALLOCATE curLast
END

--调用的时候,只需要输入以下语句即可:
EXEC ReturnTableLastRow 'tablename'
coleling 2010-10-22
  • 打赏
  • 举报
回复
假设你的表名为tableA

建一个触发器在tableA上,每插入一条记录的时候,把这条记录存放到tableB(新建,表结构与tableA相同)中,同时把tableB原有记录删除。

以后你只需读tableB即可。
walfud 2010-10-22
  • 打赏
  • 举报
回复
我的数据库每秒插入6次, 每次70多个数据.... 这个数量级我觉得需要点特殊的方法吧, 至少让我加个字段的方法应该是不行的.
王向飞 2010-10-22
  • 打赏
  • 举报
回复
加个字段,插入时间。
Teng_s2000 2010-10-22
  • 打赏
  • 举报
回复
Scope_Identity
fpzgm 2010-10-22
  • 打赏
  • 举报
回复
加个插入时间吧
xxh_1969 2010-10-21
  • 打赏
  • 举报
回复
加入一个identity列,根据@@identity值来查询
walfud 2010-10-21
  • 打赏
  • 举报
回复
我是用BCB连接的sql server2005, 想做一个客户端专门显示服务器最新的数据, 服务器的表没有unique以及primary key之类的特征, 所以我正发愁呢, 钥匙用日志是不是太浪费了呢?
abuying 2010-10-21
  • 打赏
  • 举报
回复
有没有其它特征!
这样查不出
claro 2010-10-21
  • 打赏
  • 举报
回复
最后一条插入??

还是做个日志表吧。
cxmcxm 2010-10-21
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 fredrickhu 的回复:]

2005用row_number()over
[/Quote]

row_number()over只是针对查询结果的,并不能保证排在最后的就是最后插入的,特别当表中有索引时更是如此。
cxmcxm 2010-10-21
  • 打赏
  • 举报
回复
有无主键无所谓,只要能确认某几个字段在表中是无重复的,就可根据此字段查出记录。

如果有identity列,可根据@@identity值来查询


--小F-- 2010-10-21
  • 打赏
  • 举报
回复
2000用indentity

2005用row_number()over

22,301

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧