sql >> Base de Datos >  >> RDS >> PostgreSQL

jooq - problema al reconocer la restricción ÚNICA de postgres

Por la forma en que nombró sus índices, asumo que no tiene una restricción en esas columnas, sino 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 *;

Lo anterior produce:

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

Sin embargo, convierta el índice en una restricción:

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

Y el INSERT declaración ahora funciona.

Vea una explicación aquí sobre la diferencia entre restricciones únicas e índices únicos . Esto no está realmente relacionado con jOOQ