MySQL 觸發器將欄位預設為自動產生的ID 的值
在MySQL 中,可以建立觸發器來執行特定操作在修改之前或之後對錶資料進行的操作。一個常見的用例是在插入時將欄位保留為空的情況下將欄位預設為自動產生的主鍵 (ID) 的值。
問題陳述:
為了實現這一點,我們考慮一個包含三列的表:id(主鍵)、group_id(整數)和 value(varchar)。目標是在記錄插入時具有以下行為:
觸發器實作:
雖然希望在單一語句或觸發器中執行此操作,但 MySQL 的限制阻止了它。一個解決方法是利用兩步驟方法:
CREATE TRIGGER MyTrigger BEFORE INSERT ON MyTable FOR EACH ROW BEGIN SET NEW.group_id = COALESCE(NEW.group_id, NEW.id); END
INSERT INTO MyTable (group_id, value) VALUES (NULL, 'a'); UPDATE MyTable SET group_id = COALESCE(group_id, id) WHERE id = LAST_INSERT_ID();
限制:
要注意的是,BEFORE INSERT 觸發器無法存取新產生的id 值,因為它尚未指派。但是,使用 AFTER INSERT 觸發器存取產生的值不是選項,因為在該階段無法修改列值。
因此,上面介紹的兩步驟方法為 MySQL 中所需的行為提供了解決方案.
以上是如何使用觸發器將 MySQL 中的欄位預設為自動產生的 ID?的詳細內容。更多資訊請關注PHP中文網其他相關文章!