Как я могу вставить и обновить одним запросом - PullRequest
0 голосов
/ 14 июля 2020

Пытаюсь записать в запрос вставку и обновление. Итак, мой сценарий: если строка существует, выполните upsert и вставьте новую строку. Но строки не существует, только вставьте.

Итак, вот что я пытаюсь -

Select exist(Select 1 from table where condition)

if(exists){

Update table set column =value where condition.
Insert into table (column) values (" ").

}else{

Insert into table (column) values (" ")

}

Поскольку я пишу здесь так много запросов, есть ли возможность, что я могу охватить все это в одном запросе.

Заранее спасибо

1 Ответ

0 голосов
/ 14 июля 2020

Вы можете написать просто запрос на вставку и проверить наличие 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. Этот запрос будет вставлять новые значения в таблицу при отсутствии конфликта и обновлять, когда в таблице будет найден новый идентификатор.

Исходный ответ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...