如何从sqlite中的多个表中删除数据?

时间:2009-11-14 10:15:01

标签: sqlite

我正在使用sqlite数据库来存储数据。我有三个表:Invoice,InvRow,Invdetails。

表之间的关系是:

Invoice.Id = InvRow.InvId
InvRow.Id = Invdetails.RowId 

我需要使用单个查询从三个表中删除相关条目。我怎样才能做到这一点? 有什么帮助吗?

2 个答案:

答案 0 :(得分:8)

版本3.6.19(2009年10月14日)之前的SQLite不支持外键约束,但您可以use triggers to maintain relational integrity

Starting with 3.6.19但是,SQLite支持foreign key constraints ON [UPDATE|DELETE] CASCADE个{{1}}条款,这些条款会做你想要的。

答案 1 :(得分:5)

Alex B提供了一个很好的答案,但它对我没有用。现在工作太多了。

不幸的是我不得不在两个语句中执行删除,但结果很好。我有两个表,电影和movie_providers,movie_providers是一个连接表,告诉哪个提供者正在显示我的电影。

我想: DELETE FROM movies, movie_pproviders WHERE movie.id = movie_providers.movie_id AND [my constraint]

但必须做两个步骤

DELETE FROM movies WHERE [my constraint]
DELETE FROM movie_providers where movie_id NOT IN (SELECT DISTINCT id FROM movies)

这假设我以前在电影和movie_providers之间保持一致。如果没有,我只是创建了一致性。