2011-03-29 380 views
10

我敢肯定,MySQL没有在INSERT INTO表输出[栏值]是MSSQL那样 - http://msdn.microsoft.com/en-us/library/ms177564.aspx(或http://blogs.msdn.com/b/sqltips/archive/2005/06/13/output-clause.aspx的MySQL与OUTPUT INSERT像MSSQL

什么是一个简单的方法来复制呢? (我正在把一个MSSQL应用程序移动到MySQL上,'OUTPUT'是一个唯一的标识符和一个int,所以也许我只需要选择MAX(int)并添加一个,然后在插入之前生成一个UID)

谢谢

+0

列上是否存在AUTO_INCREMENT?如果是,请使用'LAST_INSERT_ID'。如果不是,SELECT MAX必须这样做,确实... – Konerak 2011-03-29 07:56:57

+0

请注意,MS SQL也具有类似于'LAST_INSERT_ID()':SET'@logSqlId = SCOPE_IDENTITY();' 的功能您可以使用logSqlId作为输出参数,或者从中选择'SELECT'。 对于未来的读者,如果从大型商业系统之一迁移,可以考虑Postgres。它的功能与高端数据库系统更为接近,在某些情况下它超越了它们。 – 2016-03-14 16:48:40

回答

10

如果此值是一个自动递增字段,则可以在运行插入后运行SELECT LAST_INSERT_ID();,然后您将获得插入此字段的最后一个值。 请参阅:http://dev.mysql.com/doc/refman/5.0/en/information-functions.html#function_last-insert-id

+0

辉煌的,没有使用MySQL很多,所以没有意识到这一功能,应该做的伎俩,我可以很容易地生成一个GUID /唯一标识符 – AaronM 2011-03-29 09:31:33

+0

Thanx @Galz这真是太神奇了...... – Learner 2013-02-01 22:26:33

+2

可悲的是,这并没有帮助毕竟,如果要进行批量插入,尤其是你需要在事实之后进行进一步匹配,并且需要比id更多的内容 - 从而产生额外的选择。 – 2013-09-18 18:42:51