小编典典

获取最后一个插入ID的标准方法是什么?

sql

获取最后插入的ID的SQL标准是什么?如果有这样的事情。

mysql:LAST_INSERT_ID()
postgresql:…返回f_id
mssql:SCOPE_IDENTITY()
…更多示例在这里…

我的意思是,所有数据库为此都具有不同的实现,对于这样的常见任务没有标准吗?


阅读 174

收藏
2021-03-23

共1个答案

小编典典

查看此答案检索SQL中插入的行ID

简而言之,除了MAX(ID)之外,没有跨数据库的方法可以做到这一点-但这不是保证的结果,并且有很多陷阱,例如

  • 其他插入可以介于最后一次插入和最大查询之间
  • 不能与高事务表一起使用(max将发出读锁定,特定于rdbms的方法不会从任何表中读取)

与身份/自动编号/ auto_increment
/顺序有关的ANSI标准首次出现在SQL:2003中,等待所有主要的RDBMS实施。它很可能类似于Oracle
/ PostgreSQL序列。

SQL:2003标准对SQL:1999的所有部分(也称为SQL3)进行了较小的修改,并正式引入了一些新功能,例如:

-序列生成器,它允许标准化序列

SQL:2003的另一个更改是,OUTPUT USING CLAUSE但是关于它的信息很少。Sybase和SQL
Server对其进行了不同的操作,因此目前尚不清楚它将如何推出。SQL Server将其实现为

INSERT INTO TBL(..)
OUTPUT inserted.identity_col
INTO @sometablevar
VALUES(..)
2021-03-23