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

walfud 2010-10-21 07:24:26
我在一个没有primary key 的表中, 想直接查询最后一条插入的语句, 请问如何写呢?
...全文
392 点赞 收藏 15
写回复
15 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
我心依旧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
回复
相关推荐
发帖
疑难问题
创建于2007-09-28

2.1w+

社区成员

MS-SQL Server 疑难问题
申请成为版主
帖子事件
创建了帖子
2010-10-21 07:24
社区公告
暂无公告