在SQL Server 2005中插入之前检查重复记录

时间:2011-11-28 07:11:53

标签: sql-server sql-server-2005

在sql server 2005中,我有一个这样的表

empno             name          project
--------       --------       -----------
1               ram              pro-1
2               sheik            pro-2

现在,当我尝试使用empno和表中已存在的项目值插入记录时,我想提出错误。

2 个答案:

答案 0 :(得分:3)

如果您想引发错误,可以在(empno, project)上设置UNIQUE INDEXUNIQUE CONSTRAINT当您尝试INSERT与{{1}冲突的值时将抛出异常。

或者,如果记录不存在,您可以插入;如果记录已经在表中,则可以更新INDEX/CONSTRAINT

name

答案 1 :(得分:2)

如果存在则RAISERROR除非相应插入,否则代码块如下:

IF EXISTS (SELECT 1 FROM targetTable AS t
     WHERE t.empNo = @yourEmpNo
         AND t.project = @yourProject)
BEGIN
   RAISERROR('Raising errors',18,1)
END
ELSE
BEGIN
   INSERT INTO yourTable (empno, name, project)
      SELECT @empno, @name, @project
END