SQL中,可以使用create assertion语句,通过声明断言来指定更具一般性的约束

通过声明断言可以指定更具一般性的约束。

当数据更新的时候,会检查断言。任何使断言不为帧值的操作都会被拒绝执行

 例:限制数据库课程最多60名学生选修

create assertion ass
  check(60>=(
select count(*)     筛选出来的一个值
from Course,SC
where SC.Cno=Course.Cno and Course.Cname='数据库')
);
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.

例:限制每一门课程最多60名学生选修

create assertion ass
   check(60>=  
   all(                  all不可省略
   select count(*)
   from sc
   group by cno
   )
);
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.

例:限制每一门课程每个学期最多60名学生选修

alter table sc add term date;
create assertion ass 
    check(60>=
     all(   
     select count(*)
     from sc
     group by cno,term
   )
);
  • 1.
  • 2.
  • 3.
  • 4.
  • 5.
  • 6.
  • 7.
  • 8.
  • 9.

删除断言:

drop assertion 断言名
  • 1.