如何从SQLite获取更详细的约束失败断言?

时间:2017-09-16 00:28:36

标签: sqlite

我为一些分析师构建了一个工具,它将.import一大堆分析师生成的csv文件作为第一步涉及到SQLite数据库。 csv文件对应于表,并且模式中存在许多外键约束和其他完整性检查。

用户将是相当聪明和技术人员,但他们不一定了解关系数据库,SQlite默认生成的错误消息本身不够清晰。理想情况下,应该从约束失败消息中清楚地解决问题。

示例:

scheduled_duration.csv:9: INSERT failed: FOREIGN KEY constraint failed

我想制作一条更像是的信息:

scheduled_duration.csv:9: Referenced column training_track ('9345') does not exist.

模式已经知道有关失败约束的其他信息。有一种简单的方法我可以忽略得到如此改进的信息吗?必须最终手动实现我自己的数据完整性检查才能获得更好的错误消息,这将是一个巨大的痛苦。

1 个答案:

答案 0 :(得分:1)

由于deferred foreign key constraints,SQLite必须能够记住任意数量的FK约束违规。为了使实现更容易,这是通过错误计数器实现的,即使没有实际延迟的FK约束也会使用它。

因此,对于当前的实现,无法获得更好的错误消息。