Trigger

phpmyadmin 上的觸發語法

  • December 16, 2014

我無法完成這項工作。我想在刪除父主鍵之前創建一個刪除子外鍵的觸發器。這是我在 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 指的是要插入的新行的列或更新後的現有行。

引用自:https://dba.stackexchange.com/questions/86339