ON CONFLICT
конструкцията изисква UNIQUE
ограничение за работа. От документацията за INSERT .. ON CONFLICT
клауза
:
Сега въпросът не е много ясен, но вероятно имате нужда от UNIQUE
ограничение на комбинираните 2 колони:(category_id, gallery_id)
.
ALTER TABLE category_gallery
ADD CONSTRAINT category_gallery_uq
UNIQUE (category_id, gallery_id) ;
Ако редът за вмъкване съвпада с и двата стойности с ред, който вече е в таблицата, след това вместо INSERT
, направете UPDATE
:
INSERT INTO category_gallery (
category_id, gallery_id, create_date, create_by_user_id
) VALUES ($1, $2, $3, $4)
ON CONFLICT (category_id, gallery_id)
DO UPDATE SET
last_modified_date = EXCLUDED.create_date,
last_modified_by_user_id = EXCLUDED.create_by_user_id ;
Можете да използвате колоните на ограничението UNIQUE:
ON CONFLICT (category_id, gallery_id)
или името на ограничението:
ON CONFLICT ON CONSTRAINT category_gallery_uq