【问题标题】:Dropping Referencing and Referenced tables in SQLite [duplicate]在 SQLite 中删除引用和引用表 [重复]
【发布时间】:2016-02-24 17:28:56
【问题描述】:

使用https://www.sqlite.org/foreignkeys.html 上的艺术家/曲目示例

我想删除这两个表。我认为,如果我首先删除曲目(参考艺术家),然后我可以删除艺术家:

stat_5.executeUpdate("如果存在则删除表;"); stat_6.executeUpdate("如果存在艺术家则删除表;");

但这会发出异常“SQLException:外键约束失败”

我错过了什么?

【问题讨论】:

    标签: sqlite foreign-keys drop-table


    【解决方案1】:

    documentation 说:

    如果启用了外键约束,则 DROP TABLE 命令会在从数据库模式中删除表之前执行隐式 DELETE FROM 命令。 [...] 如果作为 DROP TABLE 命令的一部分执行的隐式 DELETE FROM 违反了任何直接外键约束,则会返回错误并且不会删除该表。

    以正确的顺序删除数据,以便所有中间步骤都有效。 或者只是禁用外部约束检查。

    【讨论】:

    • 如果我先删除子表(带有 REFERENCES 的表),然后删除父表(外键引用的表)应该没问题,对吧?
    • 我的问题是一个错误......由于拼写错误,我试图删除一个不存在的表。我在问题中描述的顺序(以及在我之前的评论中,是正确的。
    猜你喜欢
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-12
    • 2014-07-18
    相关资源
    最近更新 更多