Вы можете написать просто запрос на вставку и проверить наличие CONFLICT
CLAUSE.
Postgresql поддерживает предложение о конфликте, которое срабатывает, когда возник конфликт относительно определенного CONSTRAINT
.
Допустим, у вас есть таблица t
с столбцом первичного ключа id
и name
поле:
CREATE TABLE t ( id integer primary key, name varchar(255));
Вы можете проверить ограничение первичного ключа при вставке:
INSERT INTO t (id, name) VALUES (1, 'Name1')
ON CONFLICT ON t_id_constraint
DO UPDATE SET name='Name1';
t_id_constraint
- имя ограничения для уникальности столбца id. Этот запрос будет вставлять новые значения в таблицу при отсутствии конфликта и обновлять, когда в таблице будет найден новый идентификатор.
Исходный ответ