完整性

用户定义的完整性

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 <表名>

posted @ 2022-03-30 11:34  kingwzun  阅读(227)  评论(0编辑  收藏  举报