如何仅在SQL Server中不存在记录的情况下添加记录?

问题描述:

我有一个C#项目与Sql服务器数据库。
在那个数据库中,我有一个名为'Process'的表和名为'process_name','Full_Name'和'Version'(所有类型:nvarchar(50))的列。
我想编写一个查询,只有在表中不存在的情况下,这个查询才会添加新进程。
我该怎么做?
非常感谢,如何仅在SQL Server中不存在记录的情况下添加记录?

+0

什么决定了过程是否已经进入? process_name? – froadie 2010-04-28 14:12:56

+0

是的,这是PK – menacheb 2010-04-28 14:14:28

IF NOT EXISTS (SELECT * FROM Process WHERE process_name = 'xxx') 
INSERT INTO Process (process_name, Full_Name, Version) 
VALUES ('xxx', 'yyy', 'zzz') 
+0

谢谢,很好的回答 – menacheb 2010-04-28 14:33:25

假设PROCESS_NAME是要检查的PK:

IF NOT EXISTS(SELECT 1 FROM Process WHERE process_name = @ProcessName) 
    BEGIN 
     -- Process does not already exist, so INSERT 
    END 

你可能会感兴趣的MERGE命令,它是新的到SQL Server 2008

http://technet.microsoft.com/en-us/library/bb510625.aspx

这允许您插入不存在的行或更新所有存在于一个sta中的记录tement。

+0

+1击败我吧。 – ParmesanCodice 2010-04-28 14:21:30