我正在研究MySQL數據庫並面臨創建觸發器的問題。 在數據庫中,假設有兩個表,「user」和「book」具有1對多關係,user_id是「book」表中的外鍵。我創建了一個觸發器,當刪除一本書時,它將「user」表中的「book_count」列減1。MySQL觸發器:錯誤#1442
CREATE TRIGGER `after_book_delete` AFTER DELETE ON `book`
FOR EACH ROW BEGIN
UPDATE `user` SET `user`.book_count = `user`.book_count - 1 WHERE `user`.user_id = OLD.user_id;
END;
現在我想在刪除用戶時刪除用戶的所有書籍。我嘗試這樣做:
CREATE TRIGGER `before_user_delete` BEFORE DELETE ON `user`
FOR EACH ROW BEGIN
DELETE FROM `book` WHERE user_id = OLD.user_id;
END;
這是返回以下錯誤:
#1442 - Can't update table 'user' in stored function/trigger because it is already used by statement which invoked this stored function/trigger.
我能理解錯誤是它試圖更新在用戶表中的一行大約是在第一次觸發刪除。那麼是否有任何解決方法,如果我想通過觸發器來實現?
首先您使用查詢SHOW TRIGGERS LIKE'before_user_delete%'檢查其已存在或不存在 – Saty
不,它不存在。 – Sultan