sql >> データベース >  >> RDS >> PostgreSQL

エラー:インデックス式の関数は、PostgresでIMMUTABLEとマークする必要があります

    ハッカーのメーリングリストのこのスレッドによると:

    http://www.mail-archive.com/[email protected]/msg86725.html

    これは、to_charとして意図された動作です。 LC_MESSAGES設定によって異なります

    あなたの場合、使用しているフォーマットはロケールに依存しないため、これは明らかに意味がありません。したがって、インデックスでテキスト表現を使用する必要がある場合は、独自のto_char()関数を作成して、次のようにマークできます。不変:

    CREATE OR REPLACE FUNCTION my_to_char(some_time timestamp) 
      RETURNS text
    AS
    $BODY$
        select to_char($1, 'yyyy-mm-dd');
    $BODY$
    LANGUAGE sql
    IMMUTABLE;
    

    インデックス内のテキストとして使用する必要がある場合(およびSamが提案した日付へのキャストを使用できない場合)、不変としてマークできる独自のフォーマット関数を作成する必要があります。その後、インデックスで使用できます。

    ただし、Postgresを使用するには my_to_char()を呼び出す必要があるインデックス SQLステートメントでも同様です。組み込みのto_char()を使用すると、認識されません。

    しかし、インデックスでストレート日付を使用するサムの提案はおそらくより良いと思います



    1. ライブラリデータモデル

    2. MYSQL自動インクリメントフィールドにJPAアノテーションを付ける方法

    3. 公式イメージの上にカスタムSQLServerDockerイメージを作成する

    4. Atomic UPDATE..PostgresのSELECT