如何仅在SQL Server中不存在记录的情况下添加记录?
我有一个C#项目与Sql服务器数据库。
在那个数据库中,我有一个名为'Process'的表和名为'process_name','Full_Name'和'Version'(所有类型:nvarchar(50))的列。
我想编写一个查询,只有在表中不存在的情况下,这个查询才会添加新进程。
我该怎么做?
非常感谢,如何仅在SQL Server中不存在记录的情况下添加记录?
IF NOT EXISTS (SELECT * FROM Process WHERE process_name = 'xxx')
INSERT INTO Process (process_name, Full_Name, Version)
VALUES ('xxx', 'yyy', 'zzz')
谢谢,很好的回答 – 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。
+1击败我吧。 – ParmesanCodice 2010-04-28 14:21:30
什么决定了过程是否已经进入? process_name? – froadie 2010-04-28 14:12:56
是的,这是PK – menacheb 2010-04-28 14:14:28