ely z Ответов: 3

как вставить новую запись в мою таблицу, если она не существует?sql server 2005


Всем привет
Я хочу вставить новую запись в свою таблицу, если она не существует.
Например, когда я пишу этот код:

insert into tablename (code) values ('1448523')
WHERE not exists(select * from tablename where code='1448523')


Я получаю ошибку

Неправильный синтаксис около ключевого слова where

Когда я использую if not exists снова, у меня возникает ошибка.
Как мне вставить новую запись в мою таблицу, если она не существует?

Keith Barrow

Я поместил ваш sql в предварительные теги, чтобы лучше его отформатировать, а также исправил некоторые незначительные грамматические проблемы.

3 Ответов

Рейтинг:
2

m@dhu

видеть здесь[^]


Рейтинг:
16

_Ashish

Команды SQL твой неверен , Insert Командование не имеет Where пункт.

Where Оговорка применима к Update, Select и Delete Команды

insert into tablename (code) values ('1448523')
WHERE not exists(select * from tablename where code='1448523') --incorrect in insert command


вы можете воспользоваться двумя вариантами:

1.
If Not Exists(select * from tablename where code='1448523')
Begin
insert into tablename (code) values ('1448523')
End


2.
insert into tablename (code)
 Select '1448523' Where not exists(select * from tablename where code='1448523')


Keith Barrow

На самом деле команда OP действительна и для некоторых других движков баз данных, таких как MySQL.

_Ashish

MSSQL сервер не поддерживает этот способ

mondo3

для числа 2., Я думаю, вы должны добавить "from имя_таблицы" накануне", где"

mondo3

так и должно быть:
вставить в имя_таблицы (код)
Выберите '1448523' from имя_таблицы где не существует(запрос select * from имя_таблицы где код='1448523')

Рейтинг:
0

Member 14594741

У меня была проблема с Сэмом, и после многочисленных испытаний мне удалось получить следующую формулу:
вставить в имя_таблицы (код) (выберите 1448523 с двойной, где не существует(выберите код из таблицы, где код='1448523'));


CHill60

Ничем не отличается от уже опубликованного решения - за исключением, конечно, того, что это для Oracle