2010-06-12 4 views
0

J'expérimente avec des déclencheurs pour la première fois.Quelqu'un peut-il me dire ce qui ne va pas avec ma syntaxe de déclenchement de création?

Lorsque je tente de créer un déclencheur en utilisant les éléments suivants:

CREATE TRIGGER t_foldersPrivate BEFORE DELETE ON foldersPrivate 
FOR EACH ROW BEGIN 
DELETE FROM programs WHERE folderType = '0' AND folderID = OLD.ID; 
END; 

Je reçois l'erreur suivante:

`1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 3` 

(MySQL 5.1.37)

Si je me débarrasser fo l'instruction delete L'instruction create trigger fonctionne correctement. Donc, je suppose que cela doit avoir quelque chose à voir avec ça. Mais pour la vie de moi, je ne suis pas sûr de ce que ...

Répondre

1

Vous devez changer les délimiteurs.

Quelque chose comme ceci:

DELIMITER $$ 

CREATE TRIGGER t_foldersPrivate BEFORE DELETE ON foldersPrivate 
FOR EACH ROW BEGIN 
DELETE FROM programs WHERE folderType = '0' AND folderID = OLD.ID; 
END$$ 

DELIMITER ; 

En outre, vous devriez vérifier la requête de suppression séparément. Est-ce que ça marche?

+0

Oui, l'instruction delete fonctionne correctement. J'ai essayé d'utiliser le code ci-dessus, mais cela a pour effet de bloquer phpMyAdmin. Le tout s'est emparé jusqu'à ce que j'ai redémarré mysql ... – Travis

+0

Je pense qu'il est faux d'appeler "OLD.ID" dans un événement "avant". Thnik à ce sujet. Essayez de faire ceci: SUPPRIMER à partir des programmes WHERE folderType = '0' AND folderID = ID; – santiagobasulto

Questions connexes