0

我正在阅读《Android 数据库编程》这本书

我想知道这里所说的是否正确:

对于那些精通 SQL 编程和数据库模式的人,您可能想知道是否可以向 SQLite 数据库模式添加触发器和键约束。答案是,“是的,您可以使用触发器,但不,您不能使用外键约束。”

并且:

请记住,Android 的 SQLite 数据库不支持键约束

这对我来说很奇怪,因为我知道我可以使用(来自 SQLite 3.6.19)

setForeignKeyConstraintsEnabled启用 FK 约束的方法,或者我可以遵循这个

我很困惑。那么问题来了:为什么前面的书说不支持FK?考虑到在发布时(2012 年 6 月),Android 4.0.3(SQLite 3.7.4)已经发布。

4

1 回答 1

1

作者不提的原因可能有很多(EG:这本书可能是在SQLite的当前版本早于3.6.19并稍后发布时编写的),但回答没有任何意义/猜猜在 StackOverflow 中。

值得一提的是,在 3.6.19 中添加了外键支持这一事实,但它并不是突然出现的。为了使用它们,需要考虑一些事项:

  • SQLite 版本应该是 >=3.6.19
  • 库必须不编译SQLITE_OMIT_FOREIGN_KEYSQLITE_OMIT_TRIGGER定义
  • 应用程序必须在运行时启用对 FK 的支持,使用PRAGMA foreign_keys命令

还应该注意的是,为了向后兼容,默认情况下禁用 FK 约束。因此,您应该注意为每个数据库连接启用它们。

您可以在官方文档中阅读更多相关信息。

于 2013-10-27T22:22:07.637 回答