Possible Duplicate:
mysql getting last_insert_id() in a trigger
我有 MySQL TRIGGER
射击AFTER INSERT ON
一个表 (my_table
)。
我希望存储 PRIMARY_KEY
受 TRIGGER
影响的行的在变量中使用:
SET @user_id = LAST_INSERT_ID();
由 this stackoverflow link 支持。并且似乎正在发挥作用。
但是,每次它将值存储为 0
.
来自this stackoverflow link ,我相信这是由于 my_table
设置为AUTO_INCREMENT
.
SET @user_id = LAST_INSERT_ID();
克服这个问题的最佳实践是什么?
最佳答案
LAST_INSERT_ID() 函数仅返回自动生成的 ID 值。如果您自己生成 ID,则 LAST_INSERT_ID() 将不会返回它。
此外,触发器在另一个 session 中工作。但 LAST_INSERT_ID() 仅适用于当前 session - 插入新 ID 的位置,例如-
-- NULL means that ID will be generated by server
INSERT INTO table1(id) VALUES(NULL);
SELECT LAST_INSERT_ID();
> 1
关于MySQL LAST_INSERT_ID() 由于 AUTO_INCRMENT 而未更新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13141013/