如何设置约束
表结构:UserID,UserName,Flag
我想当Flag值为“1”时,UserName不能有重复的值,但如果Flag为其他值时,UserName中可以有重复值。该怎么写呢?或者能否用其他方式实现?
例如;
UserID UserName Flag
1 李四 1
2 王五 1
3 赵六 1
4 张三 0
5 张三 0
第一、二、三行,因为Flag为1,所以UserName中不能有重复值;但第四、五行的Flag值不为1,所以UserName可以有重复的值。
------解决方案--------------------create trigger checkvalue
on yourtb
for insert,update
as
declare @UserName nvarchar(50)
declare @Flag int
select @UserName = UserName,@Flag= Flag from inserted
if @Flag != 0
begin
if (select count(*) from yourtb where UserName = @UserName)> 1
begin
rollback
raiserror(@UserName,16,1)
end
end
go
我上面回复的两个都都是在我本地测试了一下以后没改全面,最后这个是ok 的,,
------解决方案--------------------楼上基本正确,不过判断条件好像应该改为 if @Flag = 1 和 if (select count(*) from yourtb where UserName = @UserName)> 0