在https://www.sqlite.org/foreignkeys.html使用艺术家/曲目示例
我想放弃这两张桌子。我认为,如果我首先删除曲目(参考艺术家),然后我可以删除艺术家:
stat_5.executeUpdate("如果存在则删除表;"); stat_6.executeUpdate("如果存在艺术家则删除表;");
但这会发出异常“SQLException:外键约束失败”
我错过了什么?
在https://www.sqlite.org/foreignkeys.html使用艺术家/曲目示例
我想放弃这两张桌子。我认为,如果我首先删除曲目(参考艺术家),然后我可以删除艺术家:
stat_5.executeUpdate("如果存在则删除表;"); stat_6.executeUpdate("如果存在艺术家则删除表;");
但这会发出异常“SQLException:外键约束失败”
我错过了什么?
文档说:
如果启用了外键约束,则 DROP TABLE 命令会在从数据库模式中删除表之前执行隐式 DELETE FROM 命令。[...] 如果作为 DROP TABLE 命令的一部分执行的隐式 DELETE FROM 违反了任何直接外键约束,则会返回错误并且不会删除该表。
以正确的顺序删除数据,以便所有中间步骤都有效。或者只是禁用外部约束检查。