用于检索插入的最后一行的通用 SQL 构造
Posted
技术标签:
【中文标题】用于检索插入的最后一行的通用 SQL 构造【英文标题】:Universal SQL construct to retrieve the last row inserted 【发布时间】:2009-08-25 08:45:27 【问题描述】:插入最后一行(或主键)的正确通用 SQL 构造是什么。 ID 可能由序列自动生成,但我根本不想处理序列!我需要通过查询表来获取 ID。或者,INSERT 可能会以某种方式扩展以返回 ID。假设我总是插入一行。该解决方案应该适用于大多数 RDBMS!
【问题讨论】:
没有万能的解决办法,除了加个时间戳 我很高兴有一个与 hsqldb、postgresql、sql server 2005、oracle、mysql 和 DB2 一起使用的解决方案 【参考方案1】:最好的方法是依赖于这样的序列:
select Max(ID) from tableName
但如果您不想处理它,您可以在表中添加新的时间戳列,然后从该列中选择最大值。
喜欢这样
select Max(TimestampField) from tableName
【讨论】:
添加时间戳对我来说不是一个选项。我的应用不得更改表结构。 序列解决方案对我有用。可能值得注意的是,如果您的序列翻转(循环结束),Max(ID) 将产生不正确的结果。就我而言,这无关紧要。谢谢。 您需要确保您的隔离级别是这样的,您不会看到其他事务插入的 ID。而 max(TimeStampField) 将要求写入不要太频繁,因此没有两个写入在该字段的分辨率范围内。以上是关于用于检索插入的最后一行的通用 SQL 构造的主要内容,如果未能解决你的问题,请参考以下文章