如何在sql server中获取最后一行

时间:2011-01-11 12:33:31

标签: sql-server-2005

如果在表格中没有Uniqueidentifier or identity列,我怎样才能获得最后插入的行。

我在等你的好主意。

6 个答案:

答案 0 :(得分:4)

您需要某种方法来识别行的顺序以确定它。像“创建日期”或IDENTITY列。

答案 1 :(得分:2)

你做不到。表由一组无序行*组成。例如,如果您需要知道插入行的时间,则需要将该信息添加到表定义中(通过添加新列)并适当填充它。

*即使面对聚集索引,总是将表视为无序行集也更健康。聚簇索引很有用,但它不保证任何特定的物理排序(如Martin对此答案的评论)

答案 2 :(得分:2)

如果你想从没有uniqueIdentifier或identity的表中获取最后一行,那么你可以使用insert trigger。

答案 3 :(得分:0)

不相信你可以。您需要某种标识符来提取数据。 ID,DateTime ..任何总是与其他人不同的东西。

答案 4 :(得分:0)

如果按存储过程插入内容,则应使用SELECT SCOPE_IDENTITY(),它将返回在当前会话中创建的最后一个标识值,但它也会将其限制为当前范围。 通过这种用法,您将无法获得可能由触发器引起的最后插入的身份。

如果您将结果用于相同或被称过程中的插入操作,请记住这一点。

答案 5 :(得分:-1)

DECLARE @IDs TABLE(id int)

insert into TableName(TableID, TableRowValue)
output inserted.TableID into @IDs
values(857, 'Test');

- 插入的标识将位于@IDs表变量