2016-02-27 122 views
0

如何在增加和使用LAST_INSERT_ID時插入?我有一個表,並觸發這樣:使用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 ; 

我知道INSERT INTO B VALUES(LAST_INSERT_ID() + 1, 'A');不會因爲LAST_INSERT_ID()做多行插入的時候,如果我有多個插件分爲B工作,LAST_INSERT_ID()將返回插入的第一行的值(而不是最後一個)。我怎麼會去遞增ID,以便LAST_INSERT_ID()返回從inserts`最近的ID

回答

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。

+0

有了這個,第一次插入我做(其中name ='A'),我得到一個主鍵重複項的錯誤。 – Justin

+0

@Justin。 。 。我懷疑你想在'A'中自動增加一列。 –

+0

是的ID在A中自動遞增,而B中的ID引用A中的ID – Justin

0

我意識到我可以插入到A沒有ID,因爲它的自動遞增。

相關問題