如何在插入和更新时检查表中的重复记录

时间:2012-07-05 10:42:02

标签: sql tsql sql-server-2005

我需要在插入和更新时检查表中的重复记录。以下是我的查询。它在插入的情况下工作正常,但在更新时失败。我无法弄明白。请帮帮我。

Insert:

Set @Count =  (Select ISNULL(Count(*),0) From AccountMaster Where [Name] = @Name and Id=@Id and Flag=1);
If @Count >0 and @InsertUpdateFlag=1
  BEGIN
    Set @DbErrormessage = 'Business Name and Account Id must be unique. Try again.';
  END   

更新:

Set @Count =  (Select Count(*) From AccountMaster Where [Name] = @Name and Id <> @Id and Flag=1);
 If @Count >0 and @InsertUpdateFlag=2
  BEGIN
   Set @DbErrormessage = 'Business Name is in already in use by some other account. Try another one.';
  END

更新的条件是数据库中不能存在Id和Name。所以我正在计算名称与任何其他id不存在的地方。但似乎不行。

下面是我的表架构。

SELECT [PkId] //Primary Key as Int
      ,[Id]  // Unique Key varchar(25)
      ,[Created]
      ,[Type]
      ,[Status]
      ,[Name]  //Business Name
      ,[ContactPerson]
      ,[ContactNumber]
      ,[Email]
      ,[Address]
      ,[LocationId]
      ,[Remarks]
      ,[Flag]
  FROM [AccountMaster]

在插入/更新时,ID和商家名称必须是唯一的。所以我需要在插入和更新时检查它。

1 个答案:

答案 0 :(得分:1)

将Unique约束放在名称中并忘记检查,您可以处理Constraint违规,然后您知道该名称已存在