如何检索数据库中最后插入的值?

时间:2012-07-13 16:27:56

标签: java sql sql-server database

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

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

2 个答案:

答案 0 :(得分:12)

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

答案 1 :(得分:2)

我是@Daniel Li的第二个评论。

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

  • id是第一列和自动递增/标识/串行列
  • CreatedBy默认为用户(SQL Server中的“default system_user”),因此我知道谁更新了列
  • CreatedAt默认为创建的日期时间(“SQL Server中的默认getdate())。

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

除了竞争条件之外,我可以通过“按表格顺序选择*从表格中选择*”找到最后插入的行。

虽然这些占用了额外的空间,但我发现它们不仅可以通过解决问题而获得回报。