ON CONFLICT
konstruksi membutuhkan UNIQUE
kendala untuk bekerja. Dari dokumentasi di INSERT .. ON CONFLICT
klausa
:
Sekarang, pertanyaannya tidak terlalu jelas tetapi Anda mungkin memerlukan UNIQUE
batasan pada 2 kolom yang digabungkan:(category_id, gallery_id)
.
ALTER TABLE category_gallery
ADD CONSTRAINT category_gallery_uq
UNIQUE (category_id, gallery_id) ;
Jika baris yang akan disisipkan cocok dengan keduanya nilai dengan baris yang sudah ada di tabel, lalu alih-alih INSERT
, lakukan 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 ;
Anda dapat menggunakan salah satu kolom dari batasan UNIQUE:
ON CONFLICT (category_id, gallery_id)
atau nama kendala:
ON CONFLICT ON CONSTRAINT category_gallery_uq