簡體   English   中英

MySQL觸發器last_insert_id()

[英]MySQL Triggers last_insert_id()

我有ID為自動增量的表1。 表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$$

請注意, 尚未 before insert觸發器中設置NEW.id _(假設id是一個auto_increment字段)_,這只是要避免的小陷阱之一。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM