相当于mySQL中的SQL Server函数SCOPE_IDENTITY()?

Posted

技术标签:

【中文标题】相当于mySQL中的SQL Server函数SCOPE_IDENTITY()?【英文标题】:The equivalent of SQLServer function SCOPE_IDENTITY() in mySQL? 【发布时间】:2010-10-08 07:53:21 【问题描述】:

mysql中的SQLServer函数SCOPE_IDENTITY()的等价物是什么?

【问题讨论】:

【参考方案1】:

This 就是你要找的东西:

LAST_INSERT_ID()

针对 OP 的评论,我创建了以下基准测试:

CREATE TABLE Foo
(
    FooId INT AUTO_INCREMENT PRIMARY KEY
);

CREATE TABLE Bar
(
    BarId INT AUTO_INCREMENT PRIMARY KEY
);

INSERT INTO Bar () VALUES ();
INSERT INTO Bar () VALUES ();
INSERT INTO Bar () VALUES ();
INSERT INTO Bar () VALUES ();
INSERT INTO Bar () VALUES ();

CREATE TRIGGER FooTrigger AFTER INSERT ON Foo
    FOR EACH ROW BEGIN
        INSERT INTO Bar () VALUES ();
    END;

INSERT INTO Foo () VALUES (); SELECT LAST_INSERT_ID();

这会返回:

+------------------+
| LAST_INSERT_ID() |
+------------------+
|                1 |
+------------------+

所以它使用原始表的LAST_INSERT_ID(),而不是触发器内部的表INSERT

编辑:我意识到我的答案中显示的SELECT LAST_INSERT_ID() 的结果是错误的,尽管最后的结论是正确的。我已将结果更新为正确的值。

【讨论】:

谢谢肖恩。当我将数据插入到其中的表具有将数据插入另一个具有自动增量字段的表中的触发器时,它的行为如何?它会返回原始表的 ID 还是受触发器影响的表的 ID?【参考方案2】:

打开 MySql 命令类型SELECT LAST_INSERT_ID(); 然后ENTER

【讨论】:

以上是关于相当于mySQL中的SQL Server函数SCOPE_IDENTITY()?的主要内容,如果未能解决你的问题,请参考以下文章

相当于 MySQL REGEXP 的 Microsoft SQL Server

sql SQL SERVER和MySQL中的CHOOSE和ELT函数

SQL Server 相当于 MySQL 的 EXPLAIN

SQL Server 相当于 MySQL 的 USING

也来谈谈SQL SERVER 自定义函数~

MySQL实现SQL Server排名函数