由于AUTO_INCREMENT,MySQL LAST_INSERT_ID()未更新

时间:2012-10-30 14:22:12

标签: mysql sql database triggers insert

  

可能重复:
  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();

克服这个问题的最佳做法是什么?

1 个答案:

答案 0 :(得分:2)

LAST_INSERT_ID()函数仅返回自动生成的ID值。如果您自己生成了ID,那么LAST_INSERT_ID()将不会返回它。

此外,触发器在另一个会话中工作。但是LAST_INSERT_ID()仅适用于当前会话 - 其中插入了新ID,例如 -

-- NULL means that ID will be generated by server
INSERT INTO table1(id) VALUES(NULL);
SELECT LAST_INSERT_ID();
> 1