據我所知,在SQLite 3中沒有直接的外鍵約束能力。我有一個多對多的表需要它, m創建一個觸發器,當外鍵約束被違反時引發一個ABORT。我的發言是這樣的:如何在sqlite3上的多個鍵上創建觸發器
CREATE TRIGGER fkFooBar
BEFORE INSERT ON Foo_Bar
FOR EACH ROW BEGIN
SELECT RAISE (ABORT, 'Insert on Foo_Bar violates foreign key')
WHERE ((SELECT id as fId FROM FOO WHERE fId = NEW.fooId) IS NULL) || ((SELECT id as bId FROM BAR WHERE bId = NEW.barId) IS NULL);
END;
但這僅限制在barId存在,而不是fooId。我只是模糊地熟悉SQL,之前沒有處理觸發器,所以我在這方面有點失落。爲什麼這不起作用?我是否以這種錯誤的方式去做?這應該更簡單嗎? (即在一條SELECT語句中)
那麼什麼是正確的工具? – 2009-04-21 15:36:59