Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

SQLITE, требуется выполнить INSERT только в случае отсутствия записи в таблице

Серге Троценко Ученик (91), на голосовании 4 года назад
Добрый день,
прошу подправить мой подзапрос для вставки данных ТОЛЬКО в том случае если они отсутствуют.

INSERT INTO users (name) VALUES('somename') WHERE NOT EXISTS (SELECT name FROM users WHERE name='somename');

В данный момент ругается на синтаксис возле WHERE:
near "WHERE": syntax error: INSERT INTO....

PS: В курсе про UNIQUE() но пока требуется реализовать именно так.
Голосование за лучший ответ
Walerchik Мастер (1277) 4 года назад
INSERT не поддерживает синтаксис WHERE, в вашем случае есть несколько способов:
1) в тупую сделать отдельно два запрос первый это который у вас в скобочках и в коде проверить есть ли что и тогда делать INSERT
2) сделать в таблице name уникальным полем и тогда будет ошибка при вставке
3) в postregsql есть такая вещь как upsert https://wiki.postgresql.org/wiki/UPSERT
4) можно делать вставку процедурой и использовать условные оператор IF
5) ещё есть такой способ
INSERT INTO users (name)
SELECT 'somename'
WHERE
NOT EXISTS (
SELECT name FROM users WHERE name='somename'
);

Не уверен насчёт последнего, но ты всегда можешь попробовать
Александр Искусственный Интеллект (301732) 4 года назад
дык... сделай поле name уникальным...
и потом валяй вот так:
INSERT IGNORE INTO users (name) VALUES('somename');
добавлять будет только если такого имени в таблице ещё нет...
Похожие вопросы