【问题标题】:How to delete data from multiple tables in sqlite?如何从sqlite中的多个表中删除数据?
【发布时间】:2009-11-14 10:15:01
【问题描述】:

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

表之间的关系是:

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

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

【问题讨论】:

    标签: sqlite


    【解决方案1】:

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

    Starting with 3.6.19,然而,SQLite 支持正确的 foreign key constraintsON [UPDATE|DELETE] CASCADE 子句,这将满足您的需求。

    【讨论】:

    • 您好 Checkers,删除性能与手动删除相比如何?谢谢。
    【解决方案2】:

    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 之间具有一致性。如果没有,我只是创建了一致性。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-14
      • 1970-01-01
      • 2011-08-30
      • 1970-01-01
      相关资源
      最近更新 更多