0

私の質問は、可変長配列列の特定のインデックスにデフォルト値を設定するにはどうすればよいですか。いずれかの位置の値をデフォルトの文字列「false」に設定しようとしています。

理由は、位置の値が「true」であるアイテムをフィルタリングするためにクエリにwhere句を設定できるようにしたい(特定のアイテムを手動でtrueに設定している)が、残りのデータをデフォルトでfalseに設定しないようにするためです。値私のクエリはデータをフェッチしていません。

これが紛らわしい場合は私に知らせてください、そして私はそれを片付けようとします..事前に感謝します

4

1 に答える 1

2

通常、列のデフォルトは列全体(この場合は配列全体)です。

そのためのトリガーを作成する必要があります。しかし、これは必要ないかもしれません。私はあなたの質問を引用します:

...しかし、その値で残りのデータをデフォルトでfalseに設定しないと、クエリはデータをフェッチしません。

次のコマンドでクエリを実行すると、おそらくこれを回避できます。

(arr[5] = 'true') IS NOT TRUE

(これには、フラグが「true」以外のすべてのケースが含まれますNULL):の代わりに:

arr[5] <> 'true'

また、このクエリを高速に必要とする場合は、部分インデックスを使用してサポートできます。

CREATE INDEX tbl_special_idx ON tbl (col1) -- potentially more columns
WHERE (arr[5] = 'true') IS NOT TRUE;

重要な部分はWHERE条項です。col1クエリ全体(特にv9.2)をカバーする列、またはクエリに追加の条件がある列の代わりに列を使用できます...

于 2013-01-09T00:04:36.337 に答える