在递增和使用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
答案 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,因为它会自动递增。