我正在使用sqlite数据库来存储数据.我有三个表:Invoice,InvRow,Invdetails.
表之间的关系是:
Invoice.Id = InvRow.InvId
InvRow.Id = Invdetails.RowId
Run Code Online (Sandbox Code Playgroud)
我需要使用单个查询从三个表中删除相关条目.我怎样才能做到这一点?有帮助吗?
版本3.6.19(2009年10月14日)之前的SQLite不支持外键约束,但您可以使用触发器来维护关系完整性.
但是,从3.6.19开始,SQLite支持使用子句的正确外键约束ON [UPDATE|DELETE] CASCADE,这将执行您想要的操作.
亚历克斯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)
Run Code Online (Sandbox Code Playgroud)
这假设我以前在电影和movie_providers之间保持一致.如果没有,我只是创建了一致性.