2

Firebird 2.5を使用しており、自分で解決できない問題が発生しました。PLANを更新またはINSERT INTOで使用する方法

UPDATE OR INSERT INTOを使用するステートメントがあります。私はそれに特定の実行計画を使用させたいと思います。しかし - 私はPLANを置くどんなに - 私は次のエラーメッセージ(行番号がPLANの位置によって異なります)を取得:

無効なトークンを。
動的SQLエラーです。
SQLエラーコード= -104。
トークンが不明 - 2行目、5列目。
計画。

私はcorresponding documentationUPDATE OR INSERT INTOPLANの使用については何も見つかりませんでした。

私の質問の側面:それらを一緒に使用することは可能ですか?これは動作するのですか、またはFirebirdの最新バージョンで動作する予定ですか?それは私が見ていない、それは動作しない明らかな理由はありますか?これを回避するための代替手段はどれですか?

+0

なぜ特定の実行計画を使用しますか? –

+0

@ EstebanP。文の 'matching'節に一致する対応するインデックスがあります。 Firebirdが現在のインデックスの選択性に関係なく使用することを願っています。これは古くなっている可能性があり、このステートメントのベストインデックスだからです。また、私はインデックスの依存関係を持つことが好きです。 –

+0

実際、私は、「計画」を使う必要はないと理解しています。私はちょうど、もしそうでなければ、なぜそうではないのかを知りたいのです。 –

答えて

1

Firebird 2.5でこれを行うことはできません(また、3.0では不可能です)。 (元の計画を指定することが可能でなければなりませんmerge声明について

parser definitionを見てみると、PLAN句はのみでサポートされています選択クエリの場合)、マージ自体は行いません。 plan句はupdate or insertに定義されていません(たとえば、insertの場合もありません)。

これをFirebird 4に追加する予定はありません。トラッカーに改善チケットを追加することを検討する必要がありますが、これがまったく可能であればわかりません。

関連する問題