资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,中国人民大学,数据库系统概论,An Introduction to Database System,安全标准:,TCSEC,、,CC,实现数据库系统安全性的技术和方法,用户身份鉴别,存取控制技术:,DAC,(,grant,、,revoke,)和,MAC,视图技术:,VIEW,、,ROLE,审计技术:,aduit,数据加密存储和加密传输:,MD5,、,DES,、,RSA,安全有些情况下,阻止了技术的发展,提高了系统的使用代价,安全问题不是全部都由技术解决,应有配套的法律和道德保证和约束。,回顾第四章内容,数据库系统概论,An Introduction to Database System,第五章 数据库完整性,数据库完整性,数据库的完整性,数据的,正确性(输入正确、存储正确),是指数据是符合现实世界语义,反映了当前实际状况的,数据的,相容性(符合要求、规则),是指数据库同一对象在不同关系表中的数据是符合逻辑的,例如,,学生的学号必须唯一,性别只能是男或女,同一个人性别不同表要统一。,本科学生年龄的取值范围为,1450,的整数,只能是数字,学生所选的课程必须是学校开设的课程,学生所在的院系必须是学校已成立的院系,月份只能是,1-12,,否则无效,数据库完整性(续),数据的完整性和安全性是两个不同概念,数据的完整性,防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据,防范对象:,不合语义的、不正确,的数据,数据的安全性,保护数据库 防止恶意的破坏和非法的存取,防范对象:,非法用户和非法操作,数据库完整性,(,续,),为维护数据库的完整性,数据库管理系统必须:,1.,提供定义完整性约束条件的机制,完整性约束条件也称为完整性规则,是数据库中的数据必须满足的,语义约束条件,SQL,标准使用了一系列概念来描述完整性,包括关系模型的实体完整性、参照完整性和用户定义完整性,这些完整性一般由,SQL,的数据定义语言语句来实现,数据库完整性,(,续,),2.,提供完整性检查的方法,数据库管理系统中检查数据是否满足完整性约束条件的机制称为完整性检查。,一般在,INSERT,、,UPDATE,、,DELETE,语句执行后开始检查,也可以在事务提交时检查,数据库完整性,(,续,),3.,违约处理,数据库管理系统若发现用户的操作违背了完整性约束条件,就采取一定的动作,拒绝,(,NO ACTION,),执行该操作,级连,(,CASCADE,),执行其他操作,第五章 数据库完整性,5.1,实体完整性,5.2,参照完整性,5.3,用户定义的完整性,5.4,完整性约束命名字句,*,5.5,域中的完整性限制,5.6,断言,5.7,触发器,5.8,小结,5.1,实体完整性,5.1.1,实体完整性定义,5.1.2,实体完整性检查和违约处理,5.1.1,实体完整性定义,关系模型的实体完整性,规定表的每一行在表中是唯一实体。通过索引、,unique,约束、主键约束、,identity(a,b),(,ab,均为正整数,,a,表示开始数,,b,表示增幅)等强制表中的实体唯一。,CREATE TABLE,中用,PRIMARY KEY,定义,单属性构成的码有两种说明方法,定义为,列级,约束条件,定义为,表级,约束条件,对多个属性构成的码只有一种说明方法,定义为表级约束条件,实体完整性定义,(,续,),例5.,1,将,Student,表中的,Sno,属性定义为码,(,1,),在列级定义主码,CREATE TABLE Student,(,Sno CHAR,(,9,),PRIMARY KEY,Sname CHAR,(,20,),NOT NULL,Ssex CHAR,(,2,),Sage SMALLINT,Sdept CHAR,(,20,),),;,实体完整性定义,(,续,),(,2,),在表级定义主码,CREATE TABLE Student,(,Sno CHAR,(,9,),Sname CHAR,(,20,),NOT NULL,Ssex CHAR,(,2,),Sage SMALLINT,Sdept CHAR,(,20,),PRIMARY KEY,(,Sno,),),;,实体完整性定义,(,续,),例5.,2,将,SC,表中的,Sno,,,Cno,属性组定义为码,CREATE TABLE SC,(,Sno CHAR,(,9,),NOT NULL,Cno CHAR,(,4,),NOT NULL,Grade SMALLINT,PRIMARY KEY,(,Sno,Cno,),/*,只能在表级定义主码*,/,),;,5.1,实体完整性,5.1.1,实体完整性定义,5.1.2,实体完整性检查和违约处理,5.1.2,实体完整性检查和违约处理,插入或对主码列进行更新操作时,关系数据库管理系统按照实体完整性规则自动进行检查。,包括:,检查主码值是否,唯一,,如果不唯一则拒绝插入或修改,检查主码的各个属性是否,非空,,只要有一个为空就拒绝插入或修改,实体完整性检查和违约处理,(,续,),检查记录中主码值是否唯一的一种方法是进行,全表扫描,依次判断表中每一条记录的主码值与将插入记录上的主码值(或者修改的新主码值)是否相同,实体完整性检查和违约处理,(,续,),表扫描缺点,十分耗时,为避免对基本表进行全表扫描,,RDBMS,核心一般都在,主码,上自动建立一个,索引,,一般作为主索引。,实体完整性检查和违约处理,(,续,),B+,树索引(多分树、发散树),例如,,新插入记录的主码值是,25,通过主码索引,从,B+,树的根结点开始查找,读取,3,个结点:根结点(,51,)、中间结点(,12 30,)、叶结点(,15 20 25,),该主码值已经存在,不能插入这条记录,第五章 数据库完整性,5.1,实体完整性,5.2,参照完整性,5.3,用户定义的完整性,5.4,完整性约束命名字句,*,5.5,域中的完整性限制,5.6,断言,5.7,触发器,5.8,小结,5.2,参照完整性,5.2.1,参照完整性定义,也称为引用完整,是指保持表之间已定义的关系。可以通过外键约束、,check,约束等。确保了键值在所有表中一致,保证了表之间数据的一致性,防止了,数据丢失或不存在的数据在数据库中扩散。,5.2.2,参照完整性检查和违约处理,5.2.1,参照完整性定义,关系模型的参照完整性定义,在,CREATE TABLE,中用,FOREIGN KEY,短语定义哪些列为外码,用,REFERENCES,短语指明这些外码参照哪些表的主码,参照完整性定义,(,续,),例如,关系,SC,中(,Sno,,,Cno,)是主码。,Sno,,,Cno,分别参照,Student,表,的主码和,Course,表的主码,例5.,3,定义,SC,中的参照完整性,CREATE TABLE SC,(,Sno CHAR,(,9,),NOT NULL,Cno CHAR,(,4,),NOT NULL,Grade SMALLINT,PRIMARY KEY,(,Sno,Cno,),/*,在表级定义实体完整性*,/,FOREIGN KEY,(,Sno,),REFERENCES Student,(,Sno,),/*,在表级定义参照完整性*,/,FOREIGN KEY,(,Cno,),REFERENCES Course,(,Cno,),/*,在表级定义参照完整性*,/,),;,5.2,参照完整性,5.2.1,参照完整性定义,5.2.2,参照完整性检查和违约处理,参照完整性检查和违约处理,一个参照完整性将两个表中的相应元组联系起来,对被参照表和参照表进行,增删改,操作时有可能破坏参照完整性,必须进行检查,参照完整性检查和违约处理,(,续,),例如,对表,SC,和,Student,有四种可能破坏参照完整性的情况:,SC,表中增加一个元组,,该元组的,Sno,属性的值在表,Student,中找不到一个元组,其,Sno,属性的值与之相等。,修改,SC,表中的一个元组,,修改后该元组的,Sno,属性的值在表,Student,中找不到一个元组,其,Sno,属性的值与之相等。,从,Student,表中删除一个元组,,造成,SC,表中某些元组的,Sno,属性的值在表,Student,中找不到一个元组,其,Sno,属性的值与之相等。,修改,Student,表中一个元组的,Sno,属性,,造成,SC,表中某些元组的,Sno,属性的值在表,Student,中找不到一个元组,其,Sno,属性的值与之相等。,参照完整性检查和违约处理,(,续,),表,5.1,可能破坏参照完整性的情况及违约处理,被参照表(例如,Student,),参照表(例如,SC,),违约处理,可能破坏参照完整性,插入元组,拒绝,可能破坏参照完整性,修改外码值,拒绝,删除元组,可能破坏参照完整性,拒绝,/,级连删除,/,设置为空值,修改主码值,可能破坏参照完整性,拒绝,/,级连修改,/,设置为空值,参照完整性检查和违约处理,(,续,),参照完整性违约处理,(,1,),拒绝,(,NO ACTION,),执行,不允许该操作执行。该策略一般设置为默认策略,(,2,),级联,(,CASCADE,),操作,当删除或修改,被参照表,(,Student,),的一个元组造成了与参照表,(,SC,),的不一致,则删除或修改,参照表,中的所有造成不一致的元组,(,3,)设置为空值(,SET-NULL,),当删除或修改被参照表的一个元组时造成了不一致,则将参照表中的所有造成不一致的元组的对应属性设置为空值。,参照完整性检查和违约处理,(,续,),例如,有下面,2,个关系,学生(,学号,,姓名,性别,,专业号,,年龄),专业(,专业号,,专业名),假设专业表中某个元组被删除,专业号为,12,按照设置为空值的策略,就要把学生表中专业号,=12,的所有元组的专业号设置为空值,对应语义:某个专业删除了,该专业的所有学生专业未定,等待重新分配专业,外码,参照完整性检查和违约处理,(,续,),对于参照完整性,除了应该定义外码,还应定义,外码列是否允许空值,参见爱课程网数据库系统概论,5.2,节,动画,参照完整性,参照完整性检查和违约处理,(,续,),例5.,4,显式说明参照完整性的违约处理示例,CREATE TABLE SC,(,Sno CHAR,(,9,),NOT NULL,,,Cno CHAR,(,4,),NOT NULL,,,Grade SMALLINT,PRIMARY KEY,(,Sno,Cno,),,FOREIGN KEY,(,Sno,),REFERENCES Student,(,Sno,),ON DELETE CASCADE,/*,级联删除,SC,表中相应的元组*,/,ON UPDATE CASCADE,/*,级联更新,SC,表中相应的元组*,/,FOREIGN KEY,(,Cno,),REFERENCES Course,(,Cno,),ON DELETE NO ACTION,/*,当删除,course,表中的元组造成了与,SC,表不一致时,拒绝删除,*,/,ON UPDATE CASCADE,/*,当更新,course,表中的,cno,时,,级联更新,SC,表中相应的元组*,/,);,第五章 数据库完整性,5.1,实体完整性,5.2,参照完整性,5.3,用户定义的完整性,5.4,完整性约束命名字句,*,5.5,域中的完整性限制,5.6,断言,5.7,触发器,5.8,小结,5.3,用户定义的完整性,用户定义的完整性是:,针对,某一具体应用,的数据必须满足的语义要求。是针对某个特定关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的特定业务规则。,是除了前两种以外,用户认为重要,让系统保证的机制,维护的方法有四种:,约束、规则、默认值、触发器,关系数据库管理系统提供了定义和检验用户定义完整性的机制,不必由应用程序承担,5.3,用户定义的完整性,5.3.1,属性上的约束条件,5.3.2,元组上的约束条件,1.,属性上约束条件的定义,CREATE TABLE,时,定义属性上的约束条件,列值非空(,NOT NULL,),列值唯一(,UNIQUE,),检查列值是否满足一个条件表达式(,CHECK,),属性上约束条件的定义,(,续,),(,1,),不允许取空值,例5.,5,在定义,SC,表时,说明,Sno,、,Cno,、,Grade,属性不允许取空值。,CREATE TABLE SC,(,Sno CHAR,(,9,),NOT NULL,Cno CHAR,(,4,),NOT NULL,Grade SMALLINT,NOT NULL,PRIMARY KEY,(,Sno,Cno,),/*,如果在表级定义实体完整性,隐含了,Sno,,,Cno,不允许取空值,则在,列级不允许取空值的定义 可以不写*,/,);,属性上约束条件的定义,(,续,),(,2,),列值唯一,例5.,6,建立部门表,DEPT,,要求部门名称,Dname,列取值唯一,部门编号,Deptno,列为主码,CREATE TABLE DEPT,(,Deptno NUMERIC,(,2,),Dname CHAR,(,9,),UNIQUE NOT NULL,,,/*,要求,Dname,列值唯一,并且不能取空值*,/,Location CHAR,(,10,),PRIMARY KEY,(,Deptno,),);,属性上约束条件的定义,(,续,),(,3,),用,CHECK,短语指定列值应该满足的条件,例5.,7,Student,表的,Ssex,只允许取“男”或“女”。,CREATE TABLE Student,(,Sno CHAR,(,9,),PRIMARY KEY,Sname CHAR,(,8,),NOT NULL,Ssex CHAR,(,2,),CHECK,(,Ssex IN,(,男,女,),,,/*,性别属性,Ssex,只允许取,男,或,女,*/,Sage SMALLINT,Sdept CHAR,(,20,),),;,属性上约束条件的定义,(,续,),例,5.8 SC,表的,Grade,的值应该在,0,和,100,之间。,CREATE TABLE SC,(,Sno CHAR,(,9,),Cno CHAR,(,4,),Grade SMALLINT,CHECK,(,Grade=0 AND Grade=100,),,,/*Grade,取值范围是,0,到,100*/,PRIMARY KEY,(,Sno,Cno,),FOREIGN KEY,(,Sno,),REFERENCES Student,(,Sno,),FOREIGN KEY,(,Cno,),REFERENCES Course,(,Cno,),),;,属性上的约束条件检查和违约处理,插入元组或修改属性的值时,关系数据库管理系统检查属性上的约束条件是否被满足,如果不满足则操作被,拒绝执行,2.,属性上的约束条件检查和违约处理,5.3,用户定义的完整性,5.3.1,属性上的约束条件,5.3.2,元组上的约束条件,1.,元组上约束条件的定义,在,CREATE TABLE,时可以用,CHECK,短语定义元组上的约束条件,即,元组级的限制,同属性值限制相比,元组级的限制可以设置多个属性之间的取值的相互约束条件,元组上约束条件的定义,(,续,),例5.,9,当学生的性别是男时,其名字不能以,Ms.,打头。,CREATE TABLE Student,(,Sno CHAR,(,9,),Sname CHAR,(,8,),NOT NULL,,,Ssex CHAR,(,2,),Sage SMALLINT,Sdept CHAR,(,20,),PRIMARY KEY,(,Sno,),CHECK,(,Ssex=,女,OR Sname NOT LIKE Ms.%,),/*,定义了元组中,Sname,和,Ssex,两个属性值之间的约束条件*,/,);,性别是女性的元组都能通过该项检查,因为,Ssex=,女成立;,当性别是男性时,要通过检查名字一定不能以,Ms.,打头,元组上的约束条件检查和违约处理,插入元组或修改属性的值时,关系数据库管理系统检查元组上的约束条件是否被满足,如果不满足则操作被,拒绝执行,2.,元组上约束条件检查和违约处理,第五章 数据库完整性,5.1,实体完整性,5.2,参照完整性,5.3,用户定义的完整性,5.4,完整性约束命名子句,*,5.5,域中的完整性限制,5.6,断言,5.7,触发器,5.8,小结,5.4,完整性约束命名子句,1.,完整性约束命名子句,用来对完整性约束条件命名,可以灵活的增加、删除一个完整性约束条件。,CONSTRAINT,包括,NOT NULL,、,UNIQUE,、,PRIMARY KEY,短语、,FOREIGN KEY,短语、,CHECK,短语等,完整性约束命名子句,(,续,),例5.,10,建立学生登记表,Student,,要求学号在,9000099999,之间,姓名不能取空值,年龄小于,30,,性别只能是“男”或“女”。,CREATE TABLE Student,(,Sno NUMERIC,(,6,),CONSTRAINT C1 CHECK,(,Sno BETWEEN 90000 AND 99999,),Sname CHAR,(,20,),CONSTRAINT C2 NOT NULL,Sage NUMERIC,(,3,),CONSTRAINT C3 CHECK,(,Sage=3000,),);,完整性约束命名子句,(,续,),2.,修改表中的完整性限制,使用,ALTER TABLE,语句修改表中的完整性限制,例,5.12,去掉例,5.10 Student,表中对性别的限制。,ALTER TABLE Student,DROP CONSTRAINT C4,;,完整性约束命名子句,(,续,),例5.,13,修改表,Student,中的约束条件,要求学号改为在,900000999999,之间,年龄由小于,30,改为小于,40,可以先删除原来的约束条件,再增加新的约束条件,ALTER TABLE Student,DROP CONSTRAINT C1;,ALTER TABLE Student,ADD CONSTRAINT C1 CHECK,(,Sno BETWEEN 900000 AND 999999,),ALTER TABLE Student,DROP CONSTRAINT C3;,ALTER TABLE Student,ADD CONSTRAINT C3 CHECK,(,Sage 40,);,第五章 数据库完整性,5.1,实体完整性,5.2,参照完整性,5.3,用户定义的完整性,5.4,完整性约束命名字句,*,5.5,域中的完整性限制,5.6,断言,5.7,触发器,5.8,小结,断言,SQL,中,可以使用,CREATE ASSERTION,语句,通过声明性断言来指定,更具一般性的约束,。,可以定义涉及,多个表,的或,聚集操作,的比较复杂的完整性约束。,断言创建以后,任何对断言中所涉及的关系的操作都会触发关系数据库管理系统对断言的检查,,任何使断言不为真值的操作都会被拒绝执行,断言,(,续,),1.,创建断言的语句格式,CREATE ASSERTION,每个断言,都被赋,予一个名字,,中的约束条件与,WHERE,子句的条件表达式类似。,例,5.18,限制数据库课程最多,60,名学生选修,CREATE ASSERTION ASSE_SC_DB_NUM,CHECK,(,60=,(,select,count,(,*,),/*,此断言的谓词涉及聚集操作,count,的,SQL,语句*,/,From Course,SC,Where SC.Cno=Course.Cno and,Course.Cname=,数据库),),;,例5.,19,限制每一门课程最多,60,名学生选修,CREATE ASSERTION ASSE_SC_CNUM1,CHECK,(,60=,ALL,(,SELECT count,(,*,),FROM SC,GROUP by cno,),),;,/*,此断言的谓词,涉及聚集操作,count,和分组函数,group by,的,SQL,语句*,/,断言,(,续,),例5.,20,限制每个学期每一门课程最多,60,名学生选修,首先需要修改,SC,表的模式,增加一个“学期(,TERM,)”属性,ALTER TABLE SC ADD TERM DATE;,然后,定义断言:,CREATE ASSERTION ASSE_SC_CNUM2,CHECK,(,60=ALL,(,SELECT count,(,*,),FROM SC,GROUP by cno,TERM,),),;,断言,(,续,),2.,删除断言的语句格式为,DROP ASSERTION,;,如果断言很复杂,则系统在检测和维护断言的,开销,较高,这是在使用断言时应该注意的,断言,(,续,),第五章 数据库完整性,5.1,实体完整性,5.2,参照完整性,5.3,用户定义的完整性,5.4,完整性约束命名字句,*,5.5,域中的完整性限制,5.6,断言,5.7,触发器,5.8,小结,触发器,触发器(,Trigger,)是用户定义在关系表上的一类由,事件驱动,的特殊过程,触发器保存在数据库服务器中,任何用户对表的增、删、改操作均由服务器自动激活相应的触发器,触发器可以实施更为,复杂的,检查和操作,具有,更精细和更强大,的数据控制能力,5.7,触发器,5.7.1,定义触发器,5.7.2,激活触发器,5.7.3,删除触发器,5.7.1,定义触发器,CREATE TRIGGER,语法格式,CREATE TRIGGER,BEFORE|AFTER ON,REFERENCING NEW|OLD ROW AS,FOR EACH ROW|STATEMENT,WHEN,触发器又叫做事件,-,条件,-,动作(,e,vent-,c,ondition-,a,ction,)规则。,当特定的系统事件发生时,对规则的条件进行检查,如果条件成立则执,行规则中的动作,否则不执行该动作。规则中的动作体可以很复杂,通,常是一段,SQL,存储过程,。,定义触发器,(,续,),定义触发器的语法说明,(,1,)表的,拥有者,才可以在表上创建触发器,(,2,)触发器名,触发器名可以包含模式名,也可以不包含模式名,同一模式下,触发器名必须是唯一的,触发器名和表名必须在同一模式下,(,3,)表名,触发器只能定义在,基本表,上,不能定义在视图上,当基本表的数据发生变化时,将激活定义在该表上相应触,发事件的触发器,定义触发器,(,续,),(,4,)触发事件,触发事件可以是,INSERT,、,DELETE,或,UPDATE,也可以是这几个事件的组合,还可以,UPDATE OF,,即进一步指明修改哪些列时激活触发器,AFTER/BEFORE,是触发的时机,AFTER,表示在触发事件的操作执行,之后,激活触发器,BEFORE,表示在触发事件的操作执行,之前,激活触发器,定义触发器,(,续,),(,5,)触发器类型,行级触发器(,FOR EACH,ROW,),语句级触发器(,FOR EACH,STATEMENT,),例如,在例,5.11,的,TEACHER,表上创建一个,AFTER UPDATE,触发器,触发事件是,UPDATE,语句:,UPDATE TEACHER SET Deptno=5;,假设表,TEACHER,有,1000,行,如果是语句级触发器,那么执行完该语句后,触发动作只发生一次,如果是,行级,触发器,触发动作将执行,1000,次,(,6,)触发条件,触发器被激活时,只有当,触发条件为真,时触发动作体才执行;否则触发动作体不执行。,如果省略,WHEN,触发条件,则触发动作体在触发器激活后立即执行,定义触发器,(,续,),(,7,)触发动作体,触发动作体可以是一个匿名,PL/SQL,过程块,也可以是对已创建存储过程的调用,如果是行级触发器,用户可以在过程体中使用,NEW,和,OLD,引用事件之后的新值和事件之前的旧值,如果是语句级触发器,则不能在触发动作体中使用,NEW,或,OLD,进行引用,如果触发动作体执行失败,激活触发器的事件就会终止执行,触发器的目标表或触发器可能影响的其他对象不发生任何变化,注意:不同的,RDBMS,产品触发器语法各不相同,定义触发器,(,续,),例,5.21,当对表,SC,的,Grade,属性进行修改时,若分数增加了,10%,则将此次操作记录到下面表中:,SC_U,(,Sno,Cno,Oldgrade,Newgrade,),其中,Oldgrade,是修改前的分数,,Newgrade,是修改后的分数。,CREATE TRIGGER SC_T,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,),INSERT INTO SC_U,(,Sno,Cno,OldGrade,NewGrade,),VALUES,(,OldTuple.Sno,OldTuple.Cno,OldTuple,.Grade,NewTuple,.Grade,),定义触发器,(,续,),例,5.22,将每次对表,Student,的插入操作所增加的学生个数记录到表,StudentInsertLog,中。,CREATE TRIGGER Student_Count,AFTER INSERT ON Student,/*,指明触发器激活的时间是在执行,INSERT,后,*,/,REFERENCING,NEW TABLE AS DELTA,FOR EACH STATEMENT,/*,语句级触发器,即执行完,INSERT,语句后下面的触发动作体才执行一次,*/,INSERT INTO StudentInsertLog,(,Numbers,),SELECT COUNT,(,*,),FROM DELTA,定义触发器,(,续,),例5.,23,定义一个,BEFORE,行级触发器,为教师表,Teacher,定义完整性规则“教授的工资不得低于,4000,元,如果低于,4000,元,自动改为,4000,元”。,CREATE TRIGGER Insert_Or_Update_Sal,BEFORE,INSERT OR UPDATE,ON Teacher,/*,触发事件是插入或更新操作*,/,FOR,EACH ROW,/*,行级触发器*,/,BEGIN,/*,定义触发动作体,是,PL/SQL,过程块*,/,IF,(,new.Job=,教授,),AND,(,new.Sal 4000,),THEN new.Sal:=4000;,END IF;,END;,5.7,触发器,5.7.1,定义触发器,5.7.2,激活触发器,5.7.3,删除触发器,5.7.2,激活触发器,触发器的执行,是由,触发事件激活,的,并由数据库服务器自动执行,一个数据表上可能定义了,多个触发器,,遵循如下的执行顺序,:,(,1,)执行该表上的,BEFORE,触发器;,(,2,)激活触发器的,SQL,语句;,(,3,)执行该表上的,AFTER,触发器。,5.7,触发器,5.7.1,定义触发器,5.7.2,激活触发器,5.7.3,删除触发器,5.7.3,删除触发器,删除触发器的,SQL,语法:,DROP TRIGGER ON;,触发器必须是一个已经创建的触发器,并且只能由具有相应权限的用户删除。,第五章 数据库完整性,5.1,实体完整性,5.2,参照完整性,5.3,用户定义的完整性,5.4,完整性约束命名字句,*,5.5,域中的完整性限制,5.6,断言,5.7,触发器,5.8,小结,5.8,小结,数据库的完整性是为了保证数据库中存储的数据是正确的、有效的,关系数据库管理系统完整性实现的机制,完整性约束定义机制(建表时定义、约束子语句、断言、触发器),完整性检查机制,违背完整性约束条件时关系数据库管理系统应采取的动作,
展开阅读全文