powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / sql insert if not exists
5 сообщений из 5, страница 1 из 1
sql insert if not exists
    #39420545
sql_dev543
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
сейчас вставляем данные в базу командой
insert into users (mobile,email) values ('+71112223344', 'test@test.ru')

как будет выглядеть команда которая при вставке сразу же проверит одновременно 3 условия есть ли в users
1. значение с mobile=+71112223344 и email=test@test.ru
2. только значение с mobile=+71112223344
3. только значение с email=test@test.ru

и если mobile и / или email который нужно вставить в users есть в базе то возвратить id записи или false
а если mobile и / или email нет, то вставить новую запись
...
Рейтинг: 0 / 0
sql insert if not exists
    #39420561
Фотография Maxim Boguk
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sql_dev543сейчас вставляем данные в базу командой
insert into users (mobile,email) values ('+71112223344', 'test@test.ru')

как будет выглядеть команда которая при вставке сразу же проверит одновременно 3 условия есть ли в users
1. значение с mobile=+71112223344 и email=test@test.ru
2. только значение с mobile=+71112223344
3. только значение с email=test@test.ru

и если mobile и / или email который нужно вставить в users есть в базе то возвратить id записи или false
а если mobile и / или email нет, то вставить новую запись

А если есть и email и mobile но id разные то чего возвращать?

PS: а вообще хранимку для такого писать надо.

--
Maxim Boguk
www.postgresql-consulting.ru
...
Рейтинг: 0 / 0
sql insert if not exists
    #39420563
sql_dev543
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Maxim Boguk,

false
...
Рейтинг: 0 / 0
sql insert if not exists
    #39420587
qwwq
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
sql_dev543,

это смотря какая бабель.
т.е. если вы (или сервер приложения) работаете с этой табличкой строго в один поток -- то что-то типа

Код: sql
1.
2.
3.
WITH get AS (SELECT .... FROM ... WHERE mobile =$1 OR email=$2)
,ins AS ( INSERT INTO users SELECT $1,$2 WHERE (SELECT 1 FROM get LIMIT 1) IS NULL )
SELECT COALESCE((SELECT TRUE  FROM ins),false);



но поскольку гарантированная однопоточность -- редкость -- то надо писать хранимочку, думается. с обработкой исключений, подаренных конкурентными вставками/удалениями. Вряд ли мердж вас тут спасёт.
...
Рейтинг: 0 / 0
sql insert if not exists
    #39420862
isdenno
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
sql_dev543,

constraint + on conflict
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / PostgreSQL [игнор отключен] [закрыт для гостей] / sql insert if not exists
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]