2

可能重复:
mysql 在触发器中获取 last_insert_id()

我让 MySQLTRIGGER触发AFTER INSERT ON了一个表 ( my_table)。

我希望使用以下PRIMARY_KEY方法将受 影响的行存储TRIGGER在变量中:

SET  @user_id =  LAST_INSERT_ID();

这个 stackoverflow 链接支持。并且似乎正在工作。

但是,每次将值存储为0.

这个 stackoverflow 链接,我相信这是由于my_table设置为AUTO_INCREMENT.

SET  @user_id =  LAST_INSERT_ID();

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

4

1 回答 1

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
于 2012-10-30T15:36:15.323 回答