Theo cách bạn đặt tên cho các chỉ mục của mình, tôi cho rằng bạn không có ràng buộc đối với các cột đó, mà là 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 *;
Ở trên tạo ra:
[42704]: ERROR: constraint "u" for table "t" does not exist
Tuy nhiên, hãy biến chỉ mục thành một ràng buộc:
DROP INDEX u;
ALTER TABLE t ADD CONSTRAINT u UNIQUE (b);
Và INSERT
tuyên bố hiện hoạt động.
Xem giải thích tại đây về sự khác biệt giữa các ràng buộc duy nhất và chỉ mục duy nhất . Điều này không thực sự liên quan đến jOOQ