Trigger
phpmyadmin 上的觸發語法
我無法完成這項工作。我想在刪除父主鍵之前創建一個刪除子外鍵的觸發器。這是我在 phpmyadmin 上使用的程式碼:
delimiter // CREATE TRIGGER removeforeign before delete on products FOR EACH ROW BEGIN delete from sales_details where product_code=21; END// delimiter ;
現在,我根本無法使觸發器工作。不適用於插入、刪除、更新。在此程式碼中,它將刪除 product_code 為 21 的位置,因為它只是試圖使語法正確,我仍在弄清楚如何與被刪除的內容進行比較。請幫我語法。我不明白為什麼它不起作用。
簡單地通過外鍵使用級聯刪除可能更有效。當
product_code
從產品中刪除具有相同的行時,它也將被刪除sales_detail
。ALTER TABLE sales_details ADD FOREIGN KEY fk_product_code(product_code) REFERENCES products(product_code) ON DELETE CASCADE;
但是,如果您想使用觸發器從
products
表中刪除與已刪除行相同product_code
的行,這應該可以解決問題:delimiter // CREATE TRIGGER removeforeing BEFORE DELETE ON products FOR EACH ROW BEGIN DELETE FROM sales_details WHERE product_code = OLD.product_code; END// delimiter ;
編輯
根據文件,
在觸發器主體中,您可以使用別名 OLD 和 NEW 來引用主題表(與觸發器關聯的表)中的列。OLD.col_name 在更新或刪除之前引用現有行的列。NEW.col_name 指的是要插入的新行的列或更新後的現有行。