【发布时间】:2009-11-14 10:15:01
【问题描述】:
我正在使用 sqlite 数据库来存储数据。我有三个表:Invoice、InvRow、Invdetails。
表之间的关系是:
Invoice.Id = InvRow.InvId
InvRow.Id = Invdetails.RowId
我需要使用单个查询从三个表中删除相关条目。我怎样才能做到这一点? 有什么帮助吗?
【问题讨论】:
标签: sqlite
我正在使用 sqlite 数据库来存储数据。我有三个表:Invoice、InvRow、Invdetails。
表之间的关系是:
Invoice.Id = InvRow.InvId
InvRow.Id = Invdetails.RowId
我需要使用单个查询从三个表中删除相关条目。我怎样才能做到这一点? 有什么帮助吗?
【问题讨论】:
标签: sqlite
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 子句,这将满足您的需求。
【讨论】:
Alex B 提供了一个很好的答案,但它对我不起作用。现在工作太多了。
不幸的是,我不得不在两个语句中进行删除,但效果很好。我有两个表,movies 和 movie_providers,movie_providers 是一个连接表,它告诉哪个提供商正在播放我的电影。
我想要:
DELETE FROM movies, movie_pproviders WHERE movie.id = movie_providers.movie_id AND [my constraint]
但必须执行 2 个步骤
DELETE FROM movies WHERE [my constraint]
DELETE FROM movie_providers where movie_id NOT IN (SELECT DISTINCT id FROM movies)
这假设我之前在 movies 和 movie_providers 之间具有一致性。如果没有,我只是创建了一致性。
【讨论】: