Mysql 使用最后一个插入ID插入
在递增和使用最后一个插入ID时,如何进行插入?我有一个表和触发器:Mysql 使用最后一个插入ID插入,mysql,database,triggers,Mysql,Database,Triggers,在递增和使用最后一个插入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 TRI
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值(最后一个插入ID()+1,'A')如果在B中有多个插入,则代码>不起作用,因为LAST\u INSERT\u ID()
在执行多行插入时,LAST\u INSERT\u ID()
将返回插入的第一行(而不是最后一行)的值。如何增加ID,以便LAST\u INSERT\u ID()
返回插入中的最新ID`如果要从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。我意识到我可以插入一个没有id的表,因为它是自动递增的。这样,第一次插入(其中name='A'),我得到一个主键重复输入的错误。@Justin。我怀疑您希望在A
中有一个自动递增的列。是的,A中的id是自动递增的,B中的id引用A中的id