使用LAST_INSERT_ID

时间:2016-02-27 03:10:44

标签: mysql database triggers

在递增和使用LAST_INSERT_ID时如何进行插入?我有一张桌子和触发器:

CREATE TABLE A(
    id int NOT NULL AUTO_INCREMENT,
    name char(15),
    PRIMARY KEY(id)
);

CREATE TABLE B(
    id int NOT NULL,
    name char(15),
    FOREIGN KEY(id) REFERENCES A(id)
);

delimiter //

CREATE TRIGGER T
AFTER INSERT ON B
FOR EACH ROW 
BEGIN
     IF (NEW.name LIKE 'A') THEN
          INSERT INTO A VALUES(LAST_INSERT_ID() + 1, 'A');
     END IF;
END//

delimiter ;

我知道如果我在B中有多个插入,INSERT INTO B VALUES(LAST_INSERT_ID() + 1, 'A');不起作用,因为LAST_INSERT_ID()在进行多行插入时,LAST_INSERT_ID()将返回插入的第一行的值(不是最后一个)。我将如何增加ID,以便LAST_INSERT_ID()从插入内容中返回最新的ID

2 个答案:

答案 0 :(得分:0)

如果要从B插入ID,请使用id列:

CREATE TRIGGER T
AFTER INSERT ON B
FOR EACH ROW 
BEGIN
     IF (NEW.name LIKE 'A') THEN
          INSERT INTO A VALUES(B.ID + 1, 'A');
     END IF;
END//

这似乎是一个奇怪的表达。也许你真正的目的只是在两个表上都有一个自动递增的id。

答案 1 :(得分:0)

我意识到我可以在没有id的情况下插入A,因为它会自动递增。