Я понимаю, что в этой же теме много ответов на вопрос SO, но я не могу использовать какую-либо информацию, чтобы выяснить, что не так с моим запросом.SQL - INSERT INTO только в том случае, если запись не существует
Я пытаюсь вставить запись в свою таблицу только в том случае, если запись с теми же database_owner
и database_name
(эти два из моих имен столбцов) еще не существует.
Я использую запрос:
INSERT INTO users_databases (database_name, database_key, database_secret, database_owner)
VALUES ('DB1', '263f690d-7ac3-49f2-aa3b-f5672e4639a2', '367123d8-e5a7-46a0-8101-21f39e6ac8d9', '[email protected]')
WHERE
NOT EXISTS
(SELECT database_name FROM uses_databases WHERE database_name = 'DB1' AND database_owner = '[email protected]');
Но я получаю ошибку Incorrect syntax near the keyword 'WHERE'.
Я хотел бы также отметить, что при выполнении запроса
SELECT database_name
FROM uses_databases
WHERE database_name = 'DB1' AND database_owner = '[email protected]'
делает возвращение рекорд ,
Где я могу ошибиться? Из того, что я читал в других вопросах, это выглядит правильно. Но это, очевидно, нет. :-) Любые советы были бы очень полезны.
возможный дубликат [INSERT INTO, если не существует SQL-сервера] (http://stackoverflow.com/questions/9648934/insert-into-if-not-exists-sql-server) http://stackoverflow.com/ Вопросы/5288283/sql-server-insert-if-not-exists-best-practice – Woot4Moo
Если вы используете предложение WHERE, вы должны использовать SELECT вместо VALUES. –
Посмотрите на http://stackoverflow.com/questions/2522379/atomic-upsert-in-sql-server-2005 для обсуждения того, почему все ответы до сих пор ошибочны. Если это sql 2008, посмотрите инструкцию 'merge'. – Laurence