El ON CONFLICT
la construcción requiere un UNIQUE
restricción para trabajar. De la documentación en INSERT .. ON CONFLICT
cláusula
:
Ahora, la pregunta no es muy clara, pero probablemente necesite un UNIQUE
restricción en las 2 columnas combinadas:(category_id, gallery_id)
.
ALTER TABLE category_gallery
ADD CONSTRAINT category_gallery_uq
UNIQUE (category_id, gallery_id) ;
Si la fila que se va a insertar coincide con ambas valores con una fila ya en la tabla, entonces en lugar de INSERT
, haz una 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 ;
Puede usar las columnas de la restricción ÚNICA:
ON CONFLICT (category_id, gallery_id)
o el nombre de la restricción:
ON CONFLICT ON CONSTRAINT category_gallery_uq