【问题标题】:How do I retrieve the last inserted value in my database?如何检索数据库中最后插入的值?
【发布时间】:2012-07-13 16:27:55
【问题描述】:

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

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

【问题讨论】:

    标签: java sql sql-server database


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      我第二次@Daniel Li 的 cmets。

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

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

      (具体语法因数据库而异。)

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

      虽然这些会占用额外的空间,但我发现它们能够随着时间的推移解决问题,从而获得更多回报。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-11-09
        • 2012-09-04
        • 1970-01-01
        • 2010-12-30
        • 2022-01-26
        • 1970-01-01
        相关资源
        最近更新 更多