Вставить только тогда, когда эта запись не существует в таблице - PullRequest
0 голосов
/ 18 сентября 2009

Я использую Sql server 2005.

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

Ниже приведен запрос на вставку

INSERT INTO [UserPoint].[dbo].[tblStatus]([Type],[Name],[DisplayOrder]) VALUES (UsageLevel,High,1)
INSERT INTO [UserPoint].[dbo].[tblStatus]([Type],[Name],[DisplayOrder]) VALUES (UsageLevel,Medium,2)
INSERT INTO [UserPoint].[dbo].[tblStatus]([Type],[Name],[DisplayOrder]) VALUES (UsageLevel,Low,3)

Таблица tblStatus имеет четыре поля id, type, name, displayorder. В котором ID генерируется автоматически.

Пожалуйста, помогите!

Спасибо.

С наилучшими пожеланиями, MS

Ответы [ 2 ]

1 голос
/ 18 сентября 2009

Самый простой способ - это утверждение о несуществовании, у вас должно работать что-то вроде следующего

note Если я неправильно понимаю вашу схему, я думаю, что вам не хватает некоторых кавычек вокруг столбцов Name и Type, я включил их ниже

if not exists (
    SELECT NULL as test FROM dbo.tblStatus 
    WHERE [Type] = 'UsageLevel' AND [Name] = 'High'
)
BEGIN
    INSERT INTO [UserPoint].[dbo].[tblStatus]([Type],[Name],[DisplayOrder]) 
    VALUES ('UsageLevel','High',1)
END

if not exists (
    SELECT NULL as test FROM dbo.tblStatus 
    WHERE [Type] = 'UsageLevel' AND [Name] = 'Medium'
)
BEGIN
    INSERT INTO [UserPoint].[dbo].[tblStatus]([Type],[Name],[DisplayOrder])
    VALUES ('UsageLevel','Medium',2)
END

if not exists (
    SELECT NULL as test FROM dbo.tblStatus
    WHERE [Type] = 'UsageLevel' AND [Name] = 'Low'
)
BEGIN
    INSERT INTO [UserPoint].[dbo].[tblStatus]([Type],[Name],[DisplayOrder])
    VALUES ('UsageLevel','Low',3)
END
0 голосов
/ 18 сентября 2009

Создайте уникальный индекс на основе элементов, которые вы не хотите вставлять, вы можете иметь многостолбцовый уникальный индекс, который должен помочь. И если вы рассматриваете этот сценарий как временный и одноразовый, тогда вы можете создать индекс и позже удалить его. Этот индекс предотвратит повторный ввод существующих элементов.

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