2009-09-18 83 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

創建基於您不想插入項目唯一索引,你可以擁有多列唯一索引,應該有所幫助。如果您將此腳本視爲臨時腳本,並且只有一次使用,則可以稍後創建索引並刪除索引。該索引將防止重新輸入現有項目。