如何将计划与更新或插入一起使用



我正在使用Firebird 2.5,遇到了一个我自己无法解决的问题。

有一个语句使用UPDATE OR INSERT INTO.我想让它使用特定的执行计划。但是 - 无论我把PLAN放在哪里 - 我都会收到以下错误消息(行号因PLAN的位置而异(:

令牌无效。
动态 SQL 错误。
SQL 错误代码 = -104。
令牌未知 - 第 2 行,第 5 列。
计划。

我在相应的文档中没有找到有关PLANUPDATE OR INSERT INTO一起使用的任何信息。

我的问题的各个方面:甚至可以将它们一起使用吗?这是否有效,或者是否计划在更高版本的Firebird中工作?是否有一个明显的原因它不起作用,我没有看到?有哪些替代方案可以规避这种情况?

在 Firebird 2.5 中不可能这样做(在 3.0 中也不可能(。查看解析器定义,PLAN子句仅在以下方面受支持:

  • 选择查询规范
  • 搜索删除
  • 搜索更新

对于merge语句,应该可以为源指定计划(如果是选择查询(,但不能为合并本身指定计划。计划子句没有为update or insert定义(例如,也没有为insert定义(。

据我所知,没有任何计划将其添加到Firebird 4中。您应该考虑在跟踪器中添加改进票,但我不知道这是否可能。

最新更新