据我所知,在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