2013-07-12 86 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复合语句块—但它肯定不会造成伤害。也就是说,通过更正使用语句分隔符,这两种方法都可以达到相同的结果。

对于什么是值得的,我个人的偏好是使用第二个实例(即避免复合语句块,它们不是绝对必要的)。