我的数据表ClassMember有字段StudentID(学生ID),ClasID(班级),State(状态)
其中State=1表示当前记录是有效记录,State=0表示当前记录是历史记录!
    数据表ClassMember用来保存学生属于哪个班级的记录,要求是StudentID(假设为:12)
+State=1的记录只能有一条,StudentID(假设为:12)+State=0的记录的条数不限制!    即: StudentID ClassID State
           1        1       1
           1        2       0
           1        3       0
       为合法!         StudentID ClassID State
           1        1       1
           1        2       1
           1        3       0       为非法!用Check如何解决???用Trriger呢???

解决方案 »

  1.   

    StudentID   ClassID   State 
                          1                 1               1 
                          1                 2               0 
                          1                 3               0 
                  为合法!                   StudentID   ClassID   State 
                          1                 1               1 
                          1                 2               1 
                          1                 3               0               为非法! ---------------
    反了吧?倒底哪个合法?
      

  2.   

    "反了吧?倒底哪个合法?"
    没有反啊,注意看了!
    不能StudentID的State=1的有两条记录,
    StudentID的State=0的记录可以有多条,不限制!
    我写的没错吧!
      

  3.   

    在插入更新时判断...
    可用trigger create trigger tr_ClassMember on ClassMember
    after insert,update
    as
    --在新增或更新时触发
    update c
    set State=0
    from 
     inserted i
    join
    ClassMember c on i.StudentID=c.StudentID and i.ClassID!=c.ClassID and c.State=1
      

  4.   

     trigger我知道,想用约束check!