2011-01-05 14 views
12

सशर्त हैं यदि/केस/जब sqlite ट्रिगर में समर्थित कथन?स्क्लाइट ट्रिगर्स में सशर्त सम्मिलन कथन

चलो कहते हैं कि मैं निम्नलिखित सेटअप:

CREATE TABLE someTable (id INTEGER PRIMARY KEY, someValue INTEGER); 
CREATE TRIGGER update_another_table AFTER INSERT ON someTable 
BEGIN 
    IF(new.someValue==0) 
     DELETE FROM another_table WHERE (...some condition); 
    ELSE 
     IF NOT EXISTS(SELECT anotherValue FROM another_table WHERE anotherValue =new.someValue) 
      INSERT INTO another_table VALUES(new.someValue, ...); 
     ELSE 
      UPDATE another_table SET anotherValue = new.someValue; 
END; 

लेकिन यह एक सिंटैक्स त्रुटि Sqlite error near 'IF': syntax error"

उत्तर

31

SQLite ट्रिगर के लिए सिंटेक्स आरेख के रूप में एक सिंटैक्स त्रुटि है कि खंड यदि कोई अनुमति नहीं है बढ़ जाता है न ही निर्माण जब निर्माण।

लेकिन आप दो या तीन ट्रिगर करता शर्त का उपयोग को परिभाषित करते हुए एक ही प्रभाव को प्राप्त कर सकते हैं, को देखने के http://sqlite.org/lang_createtrigger.html

तो तुम इस तरह अपने हटाएँ मामले के लिए ट्रिगर पर बनाना होगा:

CREATE TRIGGER delete_from_other_table AFTER INSERT ON someTable 
WHEN new.someValue = 0 
BEGIN 
    DELETE FROM anotherTable WHERE (... some condition); 
END; 

और INSERT और UPDATE केस के लिए उपयुक्त शर्तों के साथ एक और ट्रिगर जोड़ने से ...

CREATE TRIGGER update_another_table AFTER INSERT ON someTable 
WHEN new.someValue <> 0 
BEGIN 
    ... 
END; 
संबंधित मुद्दे