PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

jooq - problème de reconnaissance de la contrainte UNIQUE postgres

La façon dont vous avez nommé vos index, je suppose que vous n'avez pas de contrainte sur ces colonnes, mais 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 *;

Ce qui précède produit :

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

Cependant, transformez l'index en contrainte :

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

Et le INSERT l'instruction fonctionne maintenant.

Voir une explication ici sur la différence entre les contraintes uniques et les index uniques . Ce n'est pas vraiment lié à jOOQ