Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 使用最后一个插入ID插入_Mysql_Database_Triggers - Fatal编程技术网

Mysql 使用最后一个插入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

在递增和使用最后一个插入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值(最后一个插入ID()+1,'A')不起作用,因为
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