我需要在插入和更新时检查表中的重复记录。以下是我的查询。它在插入的情况下工作正常,但在更新时失败。我无法弄明白。请帮帮我。
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和商家名称必须是唯一的。所以我需要在插入和更新时检查它。
答案 0 :(得分:1)
将Unique约束放在名称中并忘记检查,您可以处理Constraint违规,然后您知道该名称已存在