2013-04-12 3 views
0

Я знаю, что это действительно основной вопрос, но я не могу заставить его работать. У меня есть таблица, которая выглядит примерно так:Sqlite - Вставить, если Record Exitsts

TABLE entry 
(
    "eID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
    "pID" INTEGER, 
    "fID" INTEGER, 
    "vidPath" TEXT) 

и связанный с ним один здесь:

CREATE TABLE "ftime" (
    "fID" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL, 
    "fName" TEXT); 

Я хотел бы иметь триггер такой, что можно только вставить новую запись в таблицу ввода против ftime, который уже существует, т.е. fID должен уже существовать. Я придумал следующий триггер, но он держит неудачу по какой-то причине:

CREATE TRIGGER insert_fid_exists BEFORE INSERT ON entry BEGIN 
     IF EXISTS (SELECT from faceTime WHERE fID=new.fID;) END 

Внешние ключи не вариант, к сожалению, потому что автоматический каскад, кажется, не работает.

Большое спасибо

+0

Внешние ключи работают нормально. Вы прочитали [триггерную документацию] (http://www.sqlite.org/lang_createtrigger.html)? –

+0

@ CL.Read.Не в том, как я использую базу данных. –

ответ

1
CREATE TRIGGER insert_fid_exists 
BEFORE INSERT ON entry 
BEGIN 
    SELECT RAISE(FAIL, 'no matching ftime record') 
    WHERE NOT EXISTS (SELECT 1 
         FROM ftime 
         WHERE fID = NEW.fID); 
END; 
+0

Спасибо миллион @CL. –