2013-05-02 8 views
3

J'essaye de créer un déclencheur pour insérer une nouvelle rangée conditionnellement basée sur une insertion sur une autre table ... Je ne peux pas sembler clouer la syntaxe. Voici ce que j'ai jusqu'ici:mysql trigger ne fonctionne pas?

DELIMETER $$ 
CREATE TRIGGER overPricedCar 
    AFTER INSERT ON cars 
    FOR EACH ROW 
    BEGIN 
     IF (new.sellPrice > '80000')THEN 
     INSERT INTO listings VALUES(new.carName,'GOLD','0',' '); 
     END IF; 
    END$$ 
DELIMETER ; 

Pour une raison que je continue à obtenir une erreur, ils semble être Syntaxe des OK, je ne sais pas où je suis allé mal.

EDIT

Après correction de la faute de frappe, la gâchette 'fonctionne'.

J'ai ajouté un commentaire à afficher lorsque le déclencheur se produit. Je l'ai testé, et le message de sortie est imprimé à l'écran, mais le déclencheur ne fait pas remplir les inserts:

DELIMITER $$ 
CREATE TRIGGER overPricedCar 
    BEFORE INSERT ON cars 
    FOR EACH ROW 
    BEGIN 
     IF (new.sellPrice > '80000')THEN 
     INSERT INTO listings VALUES(new.carName,'GOLD','0',' '); 
     SIGNAL SQLSTATE '45000' SET MESSAGE_TEXT = "New Gold car!"; // this line throws it off 
     END IF; 
    END$$ 
DELIMITER ; 

Où puis-je placer les messages que je veux imprimer à l'écran lorsque ce déclencheur fonctionne ?

+0

et l'erreur est ?? – jcho360

+0

@ jcho360 # 1064 - Vous avez une erreur dans votre syntaxe SQL; consultez le manuel qui correspond à votre version du serveur MySQL pour la bonne syntaxe à utiliser près de « Delimeter $$ CREER TRIGGER overPricedCar APRÈS INSERT sur les voitures pour chaque ligne B » à la ligne 1 – shnozolla

+0

quel est l'erreur? –

Répondre

5

Typo:

DELIMETER 
    ^--- should be an I: DELIMITER 
+0

#WTF? Comment avez-vous vu ça? !! bon travail +1 – jcho360

+0

Wow! ces fautes de frappe me tuent! Je ne pouvais pas trouver le problème, je vais imprimer un énorme panneau et l'accrocher devant mon bureau "CHECK FOR TYPOS" tnx. – shnozolla

+0

@Marc B Quand je fais un insert qui déclenche le trigger, aucun enregistrement n'est entré (ni sur 'car' ni sur 'table') mais le message est déclenché? – shnozolla