O
ON CONFLICT
construção requer um UNIQUE
constrangimento para trabalhar. Na documentação em INSERT .. ON CONFLICT
cláusula
:Agora, a pergunta não é muito clara, mas você provavelmente precisa de um
UNIQUE
restrição nas 2 colunas combinadas:(category_id, gallery_id)
. ALTER TABLE category_gallery
ADD CONSTRAINT category_gallery_uq
UNIQUE (category_id, gallery_id) ;
Se a linha a ser inserida corresponder a ambos valores com uma linha já na tabela, em vez de
INSERT
, faça um 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 ;
Você pode usar as colunas da restrição UNIQUE:
ON CONFLICT (category_id, gallery_id)
ou o nome da restrição:
ON CONFLICT ON CONSTRAINT category_gallery_uq