Sqlite - 如果记录存在则插入

时间:2013-04-12 18:20:57

标签: sqlite triggers foreign-keys constraints

我知道这是一个非常基本的问题,但我似乎无法使其发挥作用。我有一张看起来像这样的表:

 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

外键不是一种选择,遗憾的是,因为自动级联似乎不起作用。

非常感谢

1 个答案:

答案 0 :(得分: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;