ON CONFLICT
konstrukcja wymaga UNIQUE
ograniczenie do pracy. Z dokumentacji dotyczącej INSERT .. ON CONFLICT
klauzula
:
Teraz pytanie nie jest zbyt jasne, ale prawdopodobnie potrzebujesz UNIQUE
ograniczenie na 2 połączone kolumny:(category_id, gallery_id)
.
ALTER TABLE category_gallery
ADD CONSTRAINT category_gallery_uq
UNIQUE (category_id, gallery_id) ;
Jeśli wiersz do wstawienia pasuje do obydwóch wartości z wierszem już w tabeli, a następnie zamiast INSERT
, wykonaj 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 ;
Możesz użyć jednej z kolumn ograniczenia UNIQUE:
ON CONFLICT (category_id, gallery_id)
lub nazwę ograniczenia:
ON CONFLICT ON CONSTRAINT category_gallery_uq