当前位置: 首页 > 面试题库 >

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

章翔宇
2023-03-14
问题内容

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

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

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


问题答案:

查看此答案检索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(..)


 类似资料:
  • 问题内容: 我正在将PHP PDO与PostgreSQL一起用于新项目。 给定以下功能,如何返回刚刚插入的行的ID?它不像现在那样工作。 问题答案: 从手册: 根据基础驱动程序,返回最后插入的行的ID或序列对象的最后一个值。例如,PDO_PGSQL()要求您为name参数指定序列对象的名称。 应该是这样的: [编辑]更新文档链接

  • 问题内容: 使用Java中的sqlite获取最后插入的ID的最佳方法是什么?Google给了我不同的答案-有人说选择last-insert- rowid;其他人说调用statement.getGeneratedKeys()。最好的路线是什么?(我只想返回id,而不将其用于其他插入或其他操作。) 问题答案: 如果您的JDBC驱动程序支持它,则使用它。您不想在插入后尝试自己获取密钥。如果您的驱动程序不

  • 问题内容: 我有一个查询,我想插入最后一个ID。字段ID是主键,并且是自动递增的。 我知道我必须使用以下语句: 该语句适用于如下查询: 但是,如果我想使用以下语句获取ID: 我收到此错误: 我究竟做错了什么? 问题答案: 那是因为那是SQL函数,而不是PHP。您可以使用。 喜欢: 如果要使用SQL而不是PDO API进行操作,则可以像普通的select查询一样进行操作:

  • 我正在用“Laravel中雄辩的ORM”执行数据库操作。我只想获取数据库中最后一个插入id(不是最大id)。 我在laravel Eloquent ORM中搜索以获取最后一个插入id,我得到了以下链接(laravel,使用Eloquent获取最后一个插入id),这是指从以下函数“$data”获取最后一个插入id- 但我需要得到 我的问题是: 如何检索最后插入的id?

  • 问题内容: …并且该手册似乎表明您可以随时拨打电话,并且可以正常使用。但是这个… …似乎说明它必须在事务内。所以我的问题是:我可以在查询之前(只要没有交易)就等我想要的时间吗?面对许多并发连接,这可靠吗? 问题答案: PostgreSQL中的INSERT,UPDATE和DELETE具有RETURNING子句,这意味着您可以执行以下操作: 然后查询将为插入的每一行返回它为id插入的值。将往返保存到服

  • 问题内容: 是否有任何选项可以获取CodeIgniter中新记录的最后插入ID? 考虑字段id(自动递增)firstcolumn和secondcolumn的表组成。 这样,您可以在以下代码中使用插入ID。 问题答案: 真可惜 我看了一下用户指南,第一个功能是 这也适用于activerecord插入… 编辑:我更新了链接