Sql server 仅当该记录不存在时插入';t存在于表中

Sql server 仅当该记录不存在时插入';t存在于表中,sql-server,Sql Server,我正在使用SQLServer2005 我必须将SQL插入脚本提供给我的客户机。但在它插入表之前。我想检查表中是否已经存在记录,它不应该插入 下面是插入查询 INSERT INTO [UserPoint].[dbo].[tblStatus]([Type],[Name],[DisplayOrder]) VALUES (UsageLevel,High,1) INSERT INTO [UserPoint].[dbo].[tblStatus]([Type],[Name],[DisplayOrder]) V

我正在使用SQLServer2005

我必须将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、类型、名称和显示顺序。其中,ID是自动生成的

请帮忙

谢谢

致以最良好的祝愿,
MS

最简单的方法是not exists语句,类似下面的语句应该适合您

注意除非我误解了您的模式,否则我认为您在名称和类型列周围缺少了一些引号,我已将它们包括在下面

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

根据您不想插入的项目创建唯一索引,您可以使用多列唯一索引,这应该会有所帮助。如果您将此脚本视为临时脚本,并且只使用一次,则可以稍后创建索引和删除索引。此索引将阻止重新输入现有项目