PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

jooq - problema ao reconhecer a restrição UNIQUE do postgres


A maneira como você nomeou seus índices, suponho que você não tenha uma restrição nessas colunas, mas um 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 *;

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

No entanto, transforme o índice em uma restrição:
DROP INDEX u;
ALTER TABLE t ADD CONSTRAINT u UNIQUE (b);

E o INSERT declaração agora funciona.

Veja aqui uma explicação sobre a diferença entre restrições exclusivas e índices exclusivos . Isso não está realmente relacionado ao jOOQ