使用事务丢失LAST_INSERT_ID()的风险

时间:2017-09-06 09:18:33

标签: mysql

对以下代码使用交易时,LAST_INSERT_ID()是否存在不属于第一个插入的风险?也就是说,是否可以进行其他插入操作,例如INSERT INTO comments (comment) VALUES ('kthanksbuy');之类的不同用户互动,然后会提供LAST_INSERT_ID()评论ID而不是用户ID?

BEGIN;
INSERT INTO users (username, password)
  VALUES('john', 'pass');
INSERT INTO profiles (userid, bio, homepage) 
  VALUES(LAST_INSERT_ID(),'I am a lumberjack, and I am ok!', 'http://www.stackoverflow.com');
COMMIT;

感谢。

1 个答案:

答案 0 :(得分:0)

LAST_INSERT_ID() - 最后一次INSERT的AUTOINCREMENT列的值。

或更广泛:LAST_INSERT_ID()返回BIGINT UNSIGNED(64位)值,表示由于最近执行的INSERT语句而成功为AUTO_INCREMENT列插入的第一个自动生成的值。它来自official documentation

绝对不是第一次插入...