Il ON CONFLICT
costrutto richiede un UNIQUE
costrizione a lavorare. Dalla documentazione su INSERT .. ON CONFLICT
clausola
:
Ora, la domanda non è molto chiara ma probabilmente hai bisogno di un UNIQUE
vincolo sulle 2 colonne combinate:(category_id, gallery_id)
.
ALTER TABLE category_gallery
ADD CONSTRAINT category_gallery_uq
UNIQUE (category_id, gallery_id) ;
Se la riga da inserire corrisponde a entrambi valori con una riga già nella tabella, quindi al posto di INSERT
, esegui un 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 ;
Puoi utilizzare entrambe le colonne del vincolo UNIQUE:
ON CONFLICT (category_id, gallery_id)
o il nome del vincolo:
ON CONFLICT ON CONSTRAINT category_gallery_uq