2011-01-05 22 views
12

sqlite'de ifadeler desteklendiğinde koşullu if/durum/ifadesi var mı?koşullu ekleme ifadesi

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; 

Ama maddelerinde EĞER herhangi izin vermez SQLite Tetikleyiciler için sözdizimi Diyagramı gibi bir yazım hatasıdır bir sözdizimi hatası Sqlite error near 'IF': syntax error"

cevap

31

yükselir:

Let`s Aşağıdaki kurulum var demek ne zaman YAPILACAKTIR.

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

Ve:

Ama ZAMAN koşulunu kullanan iki veya üç tetikleyici tanımlayarak aynı etkiyi elde edebilirsiniz, http://sqlite.org/lang_createtrigger.html

Yani bunun gibi SİL durum için tetikte yaratacak bkz INSERT ve UPDATE Vakaları için uygun koşullar ile başka bir tetikleyici ekleyin ...

CREATE TRIGGER update_another_table AFTER INSERT ON someTable 
WHEN new.someValue <> 0 
BEGIN 
    ... 
END;