2017-02-22 44 views
-1

我想寫一個觸發器,只要在特定的表中創建一行,就會被調用, 假設有一個表「A」,還有另一個表「B」,我想要插入的是我想插入表「A」中插入一條記錄但插入表「A」中的記錄的主鍵時,表「B」中的記錄。如何知道哪一行已經調用觸發器?

我遇到的解決方案是我可以將最後插入的表「A」的記錄的主鍵,但如果有兩個以上的用戶試圖同時插入,可能會產生問題。

回答

1

您可以在一個讓你自動增量主鍵的值使用NEW INSERT觸發器AFTER:

CREATE 
TRIGGER `insert_on_table_a` 
AFTER INSERT ON `table_A` 
FOR EACH ROW 
    BEGIN 
    INSERT INTO table_b (table_a_ID) VALUES (NEW.ID); 
    END IF; 
END; 

在這個例子中,表-A你的自動遞增列是ID,你會得到它的使用NEW.ID

+0

那麼NEW.ID會給我最後一個在表A插入時創建的id嗎? 如果在這段時間內還在表A中創建了其他行,該怎麼辦? –

+0

像很多RDBMS一樣,你可以使用一個鎖定系統來處理這個問題,該系統將阻止任何插入,而另一個(及其觸發器)未完成。這需要幾毫秒,對用戶來說是透明的 –

相關問題