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

jooq-postgresのUNIQUE制約の認識に問題があります

    インデックスに名前を付けた方法では、これらの列に制約はないと仮定していますが、UNIQUE INDEX

    CREATE TABLE T (a INT PRIMARY KEY, b INT, c INT);
    CREATE UNIQUE INDEX u ON t(b);
    
    INSERT INTO T (a, b, c)
    VALUES (1, 2, 3)
    ON CONFLICT ON CONSTRAINT u
    DO UPDATE SET c = 4
    RETURNING *;
    

    上記は以下を生成します:

    [42704]: ERROR: constraint "u" for table "t" does not exist
    

    ただし、インデックスを制約に変えてください:

    DROP INDEX u;
    ALTER TABLE t ADD CONSTRAINT u UNIQUE (b);
    

    そしてINSERT ステートメントが機能するようになりました。

    一意の制約と一意のインデックスの違いについては、こちらの説明をご覧ください 。これは実際にはjOOQとは関係ありません




    1. MySQL-持続的接続と接続プール

    2. 効果的かつ簡単な方法で階層、親子関係を達成する

    3. SQLServerで日付を別のタイムゾーンに変換する

    4. 1か月のすべての日付を取得する方法