2015-02-01 11 views
6

Voglio creare trigger e ho scritto questa query ma questo non viene eseguito. Si prega di verificare la mia domandaErrore di sintassi sql creazione trigger

CREATE 
    TRIGGER 'blog_after_insert' AFTER INSERT 
    ON 'blog' 
    FOR EACH ROW BEGIN 

     IF NEW.deleted THEN 
      SET @changetype = 'DELETE'; 
     ELSE 
      SET @changetype = 'NEW'; 
     END IF; 

     INSERT INTO audit (blog_id, changetype) VALUES (NEW.id, @changetype); 

sto ottenendo questo errore

#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 ''blog_after_insert' AFTER INSERT 
    ON 'blog' 
    FOR EACH ROW BEGIN 

     IF NEW.del' at line 2 
+2

Basta rimuovere le virgolette. – SMA

+0

Utilizzare solo virgolette singole per le costanti stringa e data. –

risposta

12

Si prega di eseguire la query

DELIMITER $$ 
CREATE 
    TRIGGER blog_after_insert AFTER INSERT 
    ON blog 
    FOR EACH ROW BEGIN 

     IF NEW.deleted THEN 
      SET @changetype = "DELETE"; 
     ELSE 
      SET @changetype = "NEW"; 
     END IF; 

     INSERT INTO audit (blog_id, changetype) VALUES (NEW.id, @changetype); 

    END$$ 
DELIMITER ; 
0

virgolette singole (') indicano stringhe letterali - i nomi degli oggetti, come trigger e le tabelle dovrebbero utilizzare in avanti virgolette o senza virgolette a tutti:

CREATE 
    TRIGGER blog_after_insert AFTER INSERT -- here 
    ON blog -- and here 
    FOR EACH ROW BEGIN 
    -- rest of code... 
+0

ho apportato le modifiche che mi hai suggerito, ma ricevo comunque errori .. per favore guarda nella mia query dove sto facendo errore ----- CREATE TRIGGER blog_after_insert DOPO INSERISCI - qui ON blog - e qui PER OGNI FILA COMINCIARE \t \t \t SE POI NEW.deleted \t \t \t SET @ changetype = 'ELIMINA'; \t \t ELSE \t \t \t SET @ changetype = 'NEW'; \t \t END IF; \t \t INSERIRE nel controllo (blog_id, changetype) VALORI (NEW.id, @ changetype); –

+0

ho inserito spazi in caratteri speciali @ perché lo stack overflow lo considera come un utente .. –

Problemi correlati