9

谁能告诉我数据库列中最后插入值的查询。

问题是插入的值可以在使用后放置在数据库的内部行中,ASC所以DESC我无法使用该方法。如果有人有解决方案,请告诉我。

4

2 回答 2

12

您将需要使用TIMESTAMP数据列来跟踪插入时间。不幸的是,由于固有的竞争条件,在这种情况下使用自动递增的主键将不起作用。只需将条目时间戳添加为数据列并检索ORDER BY time_stamp DESC LIMIT 1以获取最后一条记录。如果你感觉非常防御,目标是在WHERE子句中包含原始调用所特有的条件INSERT(即,WHERE ID = x AND KEY = y

于 2012-07-13T16:30:55.693 回答
2

我支持@Daniel Li 的评论。

在我创建的每个持久表中,我都有以下列:

  • id 这是第一列和自动递增/身份/序列列
  • CreatedBy 默认为用户(SQL Server 中的“default system_user”),所以我知道谁更新了该列
  • CreatedAt 默认为创建的日期时间(SQL Server 中的“default getdate()”)。

(确切的语法因数据库而异。)

除了竞争条件,我可以通过执行“select * from table order by 1 desc”找到最后插入的行。

尽管这些占用了额外的空间,但我发现它们能够随着时间的推移解决问题而不仅仅是回报。

于 2012-07-13T17:05:10.593 回答