首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > SQL Server >

怎么设置约束

2012-01-05 
如何设置约束表结构:UserID,UserName,Flag我想当Flag值为“1”时,UserName不能有重复的值,但如果Flag为其他

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

热点排行