gpt4 book ai didi

php - MySQL 触发器 last_insert_id()

转载 作者:行者123 更新时间:2023-11-29 01:18:22 26 4
gpt4 key购买 nike

我有表 1,其中 id 作为自动增量。表 2 与表 1 有外键关系,我需要将表 1 生成的值插入表 2

-- Trigger DDL Statements
DELIMITER $$

USE `baemer_emr`$$

CREATE TRIGGER `baemer_emr`.`after_insert_log` AFTER INSERT ON `baemer_emr`.`table1`
FOR EACH ROW
BEGIN
INSERT INTO table2 VALUES (last_insert_id() , something);
END$$

它正在工作,但显示的是之前的数字。例如

插入表 1,id = 15。在表 2 中返回 14。有什么想法吗?

最佳答案

在触发器中,您有 2 个虚拟表,称为 NEWOLD您可以使用这些虚拟表来获取新插入的值。
OLD 虚拟表显然只适用于 UPDATEDELETE 触发器。
并且 DELETE 触发器没有 NEW 表。

-- Trigger DDL Statements
DELIMITER $$

USE `baemer_emr`$$

CREATE TRIGGER after_insert_log AFTER INSERT ON table1
FOR EACH ROW
BEGIN
INSERT INTO table2 VALUES (NEW.id, something);
END$$

请注意 NEW.id _(假设 id 是一个 auto_increment 字段)_ 尚未before insert 触发器中设置,只是要避免的小陷阱之一。

关于php - MySQL 触发器 last_insert_id(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7715197/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com