ON CONFLICT konstrukt vyžaduje UNIQUE omezení pracovat. Z dokumentace na INSERT .. ON CONFLICT doložka
:
Nyní otázka není příliš jasná, ale pravděpodobně potřebujete UNIQUE omezení na kombinaci 2 sloupců:(category_id, gallery_id) .
ALTER TABLE category_gallery
ADD CONSTRAINT category_gallery_uq
UNIQUE (category_id, gallery_id) ;
Pokud řádek, který má být vložen, odpovídá oběma hodnoty s řádkem již v tabulce, pak místo INSERT , proveďte 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 ;
Můžete použít buď sloupce podmínky UNIQUE:
ON CONFLICT (category_id, gallery_id)
nebo název omezení:
ON CONFLICT ON CONSTRAINT category_gallery_uq