如何设置SQLITE_MAX_TRIGGER_DEPTH?

时间:2012-10-03 16:53:44

标签: recursion sqlite triggers

我需要在SQLite中增加递归触发器的最大深度。 我知道我需要将SQLITE_MAX_TRIGGER_DEPTH设置为我想要的值,但我找不到这样做的方法。

我试过PRAGMA SQLITE_MAX_TRIGGER_DEPTH = X并没有用。

关于如何设置此变量的任何想法? 谢谢!

引用SQLite文档:

  

SQLite限制了触发器的递归深度,以防止涉及的语句   使用无限量内存的递归触发器。

     

在SQLite版本3.6.18之前,触发器不是递归的,因此这个限制毫无意义。从版本3.6.18开始,支持递归触发器,但必须使用PRAGMA recursive_triggers语句显式启用。从版本3.7.0开始,默认情况下启用递归触发器,但可以使用PRAGMA recursive_triggers手动禁用。只有在启用了递归触发器时,SQLITE_MAX_TRIGGER_DEPTH才有意义。

     

默认的最大触发递归深度为1000。

1 个答案:

答案 0 :(得分:2)

PRAGMA recursive_triggers仅用于启用递归触发器。

SQLITE_MAX_TRIGGER_DEPTH参数是一个C预处理器符号,在编译SQLite本身时必须设置它;在运行时不可能增加它。