2009-09-18 64 views
0

我正在使用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,类型,名称,displayorder。其中ID是自动生成的。

请帮忙!

谢谢。

最好的问候, MS

回答

1

最简单的方法是不存在的说法,类似下面应该为你

工作,除非我误解你的方案,我想你错过周围的名称和类型列的一些报价,我已经包括下面这些

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

谢谢老兄!您的帮助! – 2009-09-18 06:23:05

0

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

相关问题