De ON CONFLICT
constructie vereist een UNIQUE
beperking om te werken. Uit de documentatie op INSERT .. ON CONFLICT
clausule
:
Nu is de vraag niet erg duidelijk, maar je hebt waarschijnlijk een UNIQUE
. nodig beperking op de 2 kolommen gecombineerd:(category_id, gallery_id)
.
ALTER TABLE category_gallery
ADD CONSTRAINT category_gallery_uq
UNIQUE (category_id, gallery_id) ;
Als de in te voegen rij overeenkomt met beide waarden met een rij die al in de tabel staat, dan in plaats van INSERT
, doe een 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 ;
U kunt de kolommen van de UNIQUE-beperking gebruiken:
ON CONFLICT (category_id, gallery_id)
of de naam van de beperking:
ON CONFLICT ON CONSTRAINT category_gallery_uq