完整性
用户定义的完整性
check
check()只要语句合法即可写
create table Student(
Sno char(9) primary key,
Sname char(8) not null,
Ssex char(2) check (Ssex in('男','女')),
Sage int check(Sage<200&&Sage>0)
)
constraint
使用:对check起别名
优点:可以使用drop删除
断言
chcek的高级版,可以使用评断条件可以使用复杂句子(sql语句)
缺点:
频繁的调用会极大的影响程序的性能,增加额外的开销。
(慎重使用,即时删除)
语句:
create assertion<断言名><check子句>;
drop assertion<断言名>;
触发器Trigger
当用户进行增删改,查询操作对服务器进行触发,
CREATE TRIGGER语法格式
CREATE TRIGGER <触发器名>
{BEFORE | AFTER} <触发事件> ON <表名>
REFERENCING NEW|OLD ROW AS<变量>
FOR EACH {ROW | STATEMENT}
[WHEN <触发条件>]<触发动作体>
触发器又叫做事件-条件-动作(event-condition-action)规则。
CREATE TRIGGER ADDSore
AFTER UPDATE OF Grade ON SC
REFERENCING
OLD row AS OldTuple,
NEW row AS NewTuple
FOR EACH ROW
WHEN (NewTuple.Grade >= 1.1*OldTuple.Grade&&NewTuple.Grade<=100)
NewTuple.Grade=1.1*OldTuple.Grade
WHEN (NewTuple.Grade >= 1.1*OldTuple.Grade&&NewTuple.Grade>100)
NewTuple.Grade=100
INSERT INTO SC_U(Sno,Cno,OldGrade,NewGrade) VALUES(OldTuple.Sno,OldTuple.Cno,OldTuple.Grade,NewTuple.Grade)
激活/屏蔽触发器
Enable trigger t_name on teacher
Disble trigger t_name on teacher
删除触发出
drop trigger <触发器名> on <表名>