MySQL LAST_INSERT_ID() 由于 AUTO_INCRMENT 而未更新

标签 mysql sql database triggers insert

Possible Duplicate:
mysql getting last_insert_id() in a trigger

我有 MySQL TRIGGER射击AFTER INSERT ON一个表 (my_table)。

我希望存储 PRIMARY_KEYTRIGGER 影响的行的在变量中使用:

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/

相关文章:

MySQL Cluster + Manager 和 NDB/J

mysql - INNER JOIN 后从多个表中获取最大日期

mysql - SQL 选择投资组合中的持股集中度

mysql - 如何在 Mysql 中优化我的代码?

mysql - 设计一个关系数据库,以便实体可以保存一组可选的数据

mySQL你怎么做一个chain of join?

mysql - 在MySQL中将字符串转换为时间戳格式

php - 在 HTML 中将 MySQL 表的相似行分组在一起

从选择查询创建表的 MySQL 语法

mysql - 删除数据库中的重复值