如何设置约束
表结构: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