ON CONFLICT
コンストラクトにはUNIQUE
が必要です 動作する制約。 INSERT .. ON CONFLICT
条項
:
さて、質問はあまり明確ではありませんが、おそらくUNIQUE
が必要です 結合された2つの列に対する制約:(category_id, gallery_id)
。
ALTER TABLE category_gallery
ADD CONSTRAINT category_gallery_uq
UNIQUE (category_id, gallery_id) ;
挿入する行が両方に一致する場合 INSERT
の代わりに、すでにテーブルに行がある値 、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 ;
UNIQUE制約の列のいずれかを使用できます:
ON CONFLICT (category_id, gallery_id)
または制約名:
ON CONFLICT ON CONSTRAINT category_gallery_uq