根据 SQLite 文档,从 3.7.0 版开始,递归触发器应该默认启用。但是,当我使用 3.8.8.3 版(特别是使用 NuGet 的 System.Data.SQLite 核心)打开与数据库的连接并检查编译指示时,它们被设置为“0”或关闭,果然,它们没有递归触发。
如果我在使用 3.8.2 的开源工具 Sqlite 浏览器之类的东西中打开数据库,它也会显示 pragma 设置为关闭。我可以在 UI 中启用它们,但是一旦我关闭,然后重新打开数据库,它们就会再次关闭。怎么回事?!!
我什至尝试添加“PRAGMA RECURSIVE_TRIGGERS = 1;” 到连接字符串,一些在线文档说应该可以工作,但当然不能。
我还查看了 SQLiteConnectionStringBuilder,虽然它确实提供了对其他与编译指示相关的东西(例如二进制 GUID)的参考,但它没有对递归触发器的参考,这让我更加相信您不能为此使用连接字符串。
简而言之,这破坏了我们的应用程序。我们依赖于数据完整性的递归触发器。
我们唯一的解决方案是手动编辑应用程序用来添加编译指示的每个 SQL 查询,这真是个婊子!
所以......谁能帮我弄清楚为什么默认情况下没有启用递归触发器?