2012-07-13 59 views
9

任何人都可以告诉我查询数据库列中最后插入的值。如何检索数据库中最后插入的值?

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

回答

12

为了跟踪插入时间,您需要使用TIMESTAMP数据列。不幸的是,由于固有的竞争条件,在这种情况下使用自动递增主键不起作用。只需将条目时间戳添加为数据列,然后使用ORDER BY time_stamp DESC LIMIT 1进行检索即可获取最后一条记录。如果您感觉真的很防守,那么我们的目标是在WHERE条款中包含原始INSERT呼叫所独有的条件(即,WHERE ID = x AND KEY = y

2

第二@Daniel Li的评论。

在每一个持续的表创建,我有以下的列:

  • ID这是第一列和自动递增的/同一性/序列列
  • CreatedBy默认为用户(” “在SQL Server),所以我知道是谁更新的列
  • CreatedAt默认为创建的日期时间默认SYSTEM_USER在SQL Server(” 默认GETDATE())。

(EXA的ct语法因数据库而异)

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

虽然这些需要额外的空间,但我发现它们不仅仅是能够解决问题而付出的回报。

相关问题