2015-02-01 12 views
6

मैं ट्रिगर बनाना चाहता हूं और मैंने यह प्रश्न लिखा है लेकिन यह निष्पादित नहीं होता है। कृपया जांच करें मेरी क्वेरीएसक्यूएल सिंटैक्स त्रुटि ट्रिगर बनाने

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

मैं इस त्रुटि हो रही है

#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

बस उद्धरण हटाएं। – SMA

+0

केवल स्ट्रिंग और डेट स्थिरांक के लिए एकल उद्धरण का उपयोग करें। –

उत्तर

12

कृपया इस क्वेरी चलाने

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

एकल उद्धरण चिह्न (') स्ट्रिंग शाब्दिक निरूपित - वस्तु नाम, ट्रिगर और टेबल उद्धरण आगे का उपयोग करना चाहिए, या कोई उद्धरण बिल्कुल की तरह:

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

मैंने आपके द्वारा सुझाए गए परिवर्तन किए हैं, लेकिन अभी भी त्रुटि हो रही है .. कृपया मेरी क्वेरी देखें जहां मैं गलती कर रहा हूं ----- बनाएं TRIGGER ब्लॉग_after_insert INSERT के बाद - यहां ब्लॉग पर - और यहां प्रत्येक पंक्ति के लिए शुरू \t \t \t NEW.deleted तो \t \t \t सेट @ changetype = 'नष्ट'; \t \t ईएलएसई \t \t एसईटी @ changetype = 'NEW'; \t \t अंत IF; \t \t ऑडिट (ब्लॉग_आईडी, चेंजटाइप) में INSERT VALUES (NEW.id, @ changetype); –

+0

मैंने विशेष वर्णों में रिक्त स्थान लगाए हैं क्योंकि स्टैक ओवरफ़्लो इसे उपयोगकर्ता के रूप में मानता है .. –

संबंधित मुद्दे