PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

jooq - problema nel riconoscere il vincolo UNIQUE di postgres

Dal modo in cui hai chiamato i tuoi indici, presumo che tu non abbia un vincolo su quelle colonne, ma un 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 *;

Quanto sopra produce:

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

Tuttavia, trasforma l'indice in un vincolo:

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

E il INSERT l'istruzione ora funziona.

Vedi qui una spiegazione sulla differenza tra vincoli univoci e indici univoci . Questo non è realmente correlato a jOOQ