2015-02-01 30 views
6

Chcę utworzyć wyzwalacz i napisałem to zapytanie, ale to nie jest wykonywane. Proszę sprawdzić moje zapytanieBłąd składni SQL błąd tworzenia składni

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); 

ja dostaję ten błąd

#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

Po prostu usuń cytaty. – SMA

+0

Używaj tylko pojedynczych cudzysłowów dla ciągów i stałych daty. –

Odpowiedz

12

Proszę uruchomić tę kwerendę

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

apostrofów (') oznacza ciąg literały - nazwy obiektów, takich jak wyzwalacze i tabele powinny używać do przodu cytaty lub bez cudzysłowów na wszystkich:

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

Wprowadziłem zmiany, które mi zasugerowałeś, ale nadal dostaję błąd. Proszę spojrzeć na moje zapytanie, gdzie robię błąd - CREATE TRIGGER blog_after_insert PO WSTAWIENIU - tutaj NA blogu - a tutaj Dla każdego wiersza UŻYCIEM \t \t \t IF NEW.deleted TO \t \t \t SET @ typzmiany = 'USUŃ'; \t \t ELSE \t \t \t SET @ changetype = "NEW"; \t \t END IF; \t \t INSERT INTO audit (blog_id, changetype) VALUES (NEW.id, @ changetype); –

+0

Umieściłem spacje w znakach specjalnych @, ponieważ przepełnienie stosu uważa go za użytkownika .. –

Powiązane problemy