Der ON CONFLICT
Konstrukt erfordert einen UNIQUE
Einschränkung zu arbeiten. Aus der Dokumentation zu INSERT .. ON CONFLICT
Klausel
:
Nun, die Frage ist nicht ganz klar, aber Sie brauchen wahrscheinlich einen UNIQUE
Einschränkung für die beiden kombinierten Spalten:(category_id, gallery_id)
.
ALTER TABLE category_gallery
ADD CONSTRAINT category_gallery_uq
UNIQUE (category_id, gallery_id) ;
Wenn die einzufügende Zeile mit beidem übereinstimmt Werte mit einer Zeile bereits in der Tabelle, dann statt INSERT
, führen Sie ein UPDATE
durch :
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 ;
Sie können eine der Spalten der UNIQUE-Einschränkung verwenden:
ON CONFLICT (category_id, gallery_id)
oder der Beschränkungsname:
ON CONFLICT ON CONSTRAINT category_gallery_uq