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

数据库数据不能重复有关问题

2014-01-05 
数据库数据不能重复问题数据库中有假设三列 ABCA学校名称 不可为空B班级名称 不可为空C班级荣誉 可为空 要

数据库数据不能重复问题
数据库中有假设三列 A  B  C  
A  学校名称 不可为空
B  班级名称 不可为空
C  班级荣誉 可为空 

要求是 A列的值可以重复  但是如果相同A列的值的话  B  C 列不可以重复 但是C列可能有Null值   

比如
  A    B    C
  1    1    1   对
  1    2    2   对
  1    1    2   错  A列为1 B列为1 的已经存在了
  1    1   NUll 错  
  1    3    1   错  A列为1 C列为1 的已经存在了
  1    4    4   对

  2    1    1   对
  2    1    2   错
  2    2    1   错 

应该创建什么触发器 或是索引什么的来进行限制呢?
[解决办法]
呵呵,修改的只需要这样,加一个update就可以了:

create table tb(a int not null ,b int not null ,c int)
 
go
 
 
create trigger dbo.trigger_insert_tb
on tb
for insert,update
as
if (select COUNT(*) 
    from inserted i
    inner join tb t
            on t.a = i.a  and t.b = i.b) >= 2
   rollback
    
if (select COUNT(*) 
    from inserted i
    inner join tb t
            on t.a = i.a  and t.c = i.c) >= 2
   rollback
go   
 

热点排行