2013-07-12 85 views
-1
USE `db`; 
DELIMITER $$ 

CREATE TRIGGER `recintos_BDEL` 
BEFORE DELETE ON recintos 
FOR EACH ROW 
BEGIN 
DELETE FROM imagenes WHERE id_imagen IN (
    SELECT imagenes_id_imagen FROM r_imagenes_recintos 
    WHERE recintos_id_recinto=OLD.id_recinto 
    ); 
END; $$ 
DELIMITER | 

OR觸發的MySQL不工作

USE `db`; 
DELIMITER $$ 

CREATE TRIGGER `recintos_BDEL` 
BEFORE DELETE ON recintos 
FOR EACH ROW 
DELETE FROM imagenes WHERE id_imagen IN (
    SELECT imagenes_id_imagen FROM r_imagenes_recintos 
    WHERE recintos_id_recinto=NEW.id_recinto 
); 
+0

請說明您的具體問題或添加更多的細節,以確切地突出你所需要的。正如它目前所寫,很難確切地說出你在問什麼。 –

回答

0

唯一的區別似乎是在第一時間使用BEGIN ... END複合語句塊的(和錯誤的改變/在缺少結束分隔符第二審)。

由於觸發只包含一個聲明,沒有需要BEGIN ... END複合語句塊—但它肯定不會造成傷害。也就是說,通過更正使用語句分隔符,這兩種方法都可以達到相同的結果。

對於什麼是值得的,我個人的偏好是使用第二個實例(即避免複合語句塊,它們不是絕對必要的)。