Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

MYSQL ट्रिगर पर सिंटैक्स त्रुटि

आपके MySQL क्लाइंट के लिए ; . की व्याख्या न करने के लिए जो INSERT . को समाप्त करता है CREATE TRIGGER . के अंत के रूप में स्टेटमेंट बयान, आपको यह सूचित करना होगा कि आप किसी अन्य कथन सीमांकक का उपयोग करना चाहते हैं।

mysql में कमांड-लाइन क्लाइंट, आप इसे DELIMITER . के साथ कर सकते हैं कमांड . उदाहरण के लिए, अपने स्टेटमेंट डिलीमीटर को डबल-सेमीकोलन में बदलने के लिए:

DELIMITER ;;

तब आप यह कर सकते हैं:

CREATE TRIGGER LOG_UPDATE BEFORE UPDATE ON WORKLOG FOR EACH ROW BEGIN
  INSERT INTO WORKLOG_BACKUP VALUES (
    NULL,
    CURRENT_TIMESTAMP,
    NEW.LOGNO,
    NEW.JOBNO,
    NEW.EMPLOYEENO,
    NEW.WORKDATE,
    NEW.WORKTIME,
    'UPDATE'
  );
END;;

हालांकि, क्योंकि इस मामले में आपके ट्रिगर में केवल एक कथन है, आपको BEGIN ... END कंपाउंड स्टेटमेंट ब्लॉक और इसलिए पूरी तरह से सीमांकक बदलने से बच सकते हैं:

CREATE TRIGGER LOG_UPDATE BEFORE UPDATE ON WORKLOG FOR EACH ROW
  INSERT INTO WORKLOG_BACKUP VALUES (
    NULL,
    CURRENT_TIMESTAMP,
    NEW.LOGNO,
    NEW.JOBNO,
    NEW.EMPLOYEENO,
    NEW.WORKDATE,
    NEW.WORKTIME,
    'UPDATE'
  )
;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL दशमलव (13.6) से मुद्रा तक

  2. लैरावेल में जहां क्वेरी गलत टाइमस्टैम्प लौटाती है, उससे जुड़ें

  3. php का उपयोग कर एक MySQL डेटाबेस में एकाधिक पंक्तियों को सम्मिलित करने का सबसे अच्छा तरीका क्या है?

  4. एक सहसंबंधित सबक्वायरी में MySQL में चलती औसत की गणना कैसे करें?

  5. विंडोज 7 पर mysql सर्वर को पुनरारंभ करें