2013-04-12 89 views
0

我知道這是一個非常基本的問題,但我似乎無法使其工作。我有一個表,看起來像這樣:Sqlite的 - 插入如果記錄退出

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.Not我如何使用數據庫。 –

回答

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。 –