PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

jooq - Problem beim Erkennen der postgres UNIQUE-Einschränkung

So wie Sie Ihre Indizes benannt haben, gehe ich davon aus, dass Sie keine Einschränkung für diese Spalten haben, sondern einen 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 *;

Das Obige erzeugt:

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

Verwandeln Sie den Index jedoch in eine Einschränkung:

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

Und das INSERT Anweisung funktioniert jetzt.

Hier finden Sie eine Erklärung zum Unterschied zwischen Unique Constraints und Unique Indexes . Dies hat nicht wirklich etwas mit jOOQ zu tun