数据库系统概论第五章.ppt

上传人:赵** 文档编号:65351905 上传时间:2022-12-05 格式:PPT 页数:52 大小:320KB
返回 下载 相关 举报
数据库系统概论第五章.ppt_第1页
第1页 / 共52页
数据库系统概论第五章.ppt_第2页
第2页 / 共52页
点击查看更多>>
资源描述

《数据库系统概论第五章.ppt》由会员分享,可在线阅读,更多相关《数据库系统概论第五章.ppt(52页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。

1、数据库系统概论数据库系统概论An Introduction to Database System第五章第五章 数据库完整性数据库完整性An Introduction to Database System数据库完整性数据库完整性n n数据库的完整性数据库的完整性n n数据的数据的正确性正确性和和相容性相容性n n数据的完整性和安全性是两个不同概念数据的完整性和安全性是两个不同概念n n数据的完整性数据的完整性防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正防止数据库中存在不符合语义的数据,也就是防止数据库中存在不正确的数据确的数据防范对象:不合语义的、不正确的数据防范对象:不合语义的

2、、不正确的数据n n数据的安全性数据的安全性保护数据库防止恶意的破坏和非法的存取保护数据库防止恶意的破坏和非法的存取防范对象:非法用户和非法操作防范对象:非法用户和非法操作数据库完整性数据库完整性(续续)为维护数据库的完整性,DBMS必须:n n1.1.提供定义完整性约束条件的机制提供定义完整性约束条件的机制n n2.2.提供完整性检查的方法提供完整性检查的方法n n3.3.违约处理违约处理第五章第五章 数据库完整性数据库完整性5.1 实体完整性实体完整性5.2 参照完整性参照完整性5.3 用户定义的完整性用户定义的完整性5.4 完整性约束命名字句完整性约束命名字句*5.5 域中的完整性限制域

3、中的完整性限制5.6 触发器触发器5.7 小结小结5.1 实体完整性实体完整性n n5.1.1 5.1.1 实体完整性定义实体完整性定义实体完整性定义实体完整性定义n n5.1.2 5.1.2 实体完整性检查和违约处理实体完整性检查和违约处理实体完整性检查和违约处理实体完整性检查和违约处理 插入或对主码列进行更新操作时,插入或对主码列进行更新操作时,RDBMSRDBMS按照实体完整性规按照实体完整性规则自动进行检查。包括:则自动进行检查。包括:n n1.1.检查主码值是否唯一,如果不唯一则拒绝插入或修改检查主码值是否唯一,如果不唯一则拒绝插入或修改n n2.2.检查主码的各个属性是否为空,只要

4、有一个为空就拒绝插入或修检查主码的各个属性是否为空,只要有一个为空就拒绝插入或修改改n n检查记录中主码值是否唯一的一种方法是进行检查记录中主码值是否唯一的一种方法是进行全表扫描全表扫描n n 索引索引 第五章第五章 数据库完整性数据库完整性5.1 实体完整性实体完整性5.2 参照完整性参照完整性5.3 用户定义的完整性用户定义的完整性5.4 完整性约束命名字句完整性约束命名字句*5.5 域中的完整性限制域中的完整性限制5.6 触发器触发器5.7 小结小结5.2 参照完整性参照完整性n n5.2.1 参照完整性定义参照完整性定义n n5.2.2 参照完整性检查和违约处理参照完整性检查和违约处理

5、5.2.1 参照完整性定义参照完整性定义n n关系模型的参照完整性定义n n在在CREATE TABLECREATE TABLE中用中用FOREIGN KEYFOREIGN KEY短语定短语定义哪些列为外码义哪些列为外码n n用用REFERENCESREFERENCES短语指明这些外码参照哪些表短语指明这些外码参照哪些表的主码的主码 参照完整性定义参照完整性定义(续续)例如,关系例如,关系SCSC中一个元组表示一个学生选修的某门课程的成绩,中一个元组表示一个学生选修的某门课程的成绩,(SnoSno,CnoCno)是主码。)是主码。SnoSno,CnoCno分别参照引用分别参照引用Student

6、Student表的表的主码和主码和CourseCourse表的主码表的主码 例例3 3 定义定义SCSC中的参照完整性中的参照完整性 CREATE TABLE SCCREATE TABLE SC (SnoSno CHAR(9)NOT NULL CHAR(9)NOT NULL,CnoCno CHAR(4)NOT NULL CHAR(4)NOT NULL,Grade SMALLINTGrade SMALLINT,PRIMARY KEY(PRIMARY KEY(SnoSno,CnoCno),*在表级定义实体完整性在表级定义实体完整性*/FOREIGN KEY(FOREIGN KEY(SnoSno)R

7、EFERENCES)REFERENCES Student(SnoStudent(Sno),/*/*在表级定义参照完整性在表级定义参照完整性*/FOREIGN KEY(FOREIGN KEY(CnoCno)REFERENCES)REFERENCES Course(CnoCourse(Cno)/*/*在表级定义参照完整性在表级定义参照完整性*/););5.2 参照完整性参照完整性n n5.2.1 5.2.1 参照完整性定义参照完整性定义参照完整性定义参照完整性定义n n5.2.2 5.2.2 参照完整性检查和违约处理参照完整性检查和违约处理参照完整性检查和违约处理参照完整性检查和违约处理被参照表(

8、例如被参照表(例如StudentStudent)参照表(例如参照表(例如SCSC)违约处理违约处理可能破坏参照完整性可能破坏参照完整性 插入元组插入元组拒绝拒绝可能破坏参照完整性可能破坏参照完整性 修改外码值修改外码值拒绝拒绝删除元组删除元组 可能破坏参照完整性可能破坏参照完整性拒绝拒绝/级连删除级连删除/设置为空设置为空值值修改主码值修改主码值 可能破坏参照完整性可能破坏参照完整性拒绝拒绝/级连修改级连修改/设置为空设置为空值值参照完整性检查和违约处理参照完整性检查和违约处理可能破坏参照完整性的情况及违约处理被参照表(例如被参照表(例如StudentStudent)参照表(例如参照表(例如S

9、CSC)违约处理违约处理可能破坏参照完整性可能破坏参照完整性 插入元组插入元组拒绝拒绝可能破坏参照完整性可能破坏参照完整性 修改外码值修改外码值拒绝拒绝删除元组删除元组 可能破坏参照完整可能破坏参照完整性性拒绝拒绝/级连删除级连删除/设置为设置为空值空值修改主码值修改主码值 可能破坏参照完整可能破坏参照完整性性拒绝拒绝/级连修改级连修改/设置为设置为空值空值第五章第五章 数据库完整性数据库完整性5.1 实体完整性实体完整性5.2 参照完整性参照完整性5.3 用户定义的完整性用户定义的完整性5.4 完整性约束命名字句完整性约束命名字句*5.5 域中的完整性限制域中的完整性限制5.6 触发器触发器

10、5.7 小结小结5.3 用户定义的完整性用户定义的完整性n n用户定义的完整性就是针对某一具体应用的数据必须满足的语义要求 n nRDBMS提供,而不必由应用程序承担5.3 用户定义的完整性用户定义的完整性n n5.3.1 属性上的约束条件的定义属性上的约束条件的定义n n5.3.2 属性上的约束条件检查和违约处理属性上的约束条件检查和违约处理 n n5.3.3 元组上的约束条件的定义元组上的约束条件的定义 n n5.3.4元组上的约束条件检查和违约处理元组上的约束条件检查和违约处理5.3.1 属性上的约束条件的定义属性上的约束条件的定义n nCREATE TABLE时定义n n列值非空(列值

11、非空(NOT NULLNOT NULL)n n列值唯一(列值唯一(UNIQUEUNIQUE)n n检查列值是否满足一个布尔表达式(检查列值是否满足一个布尔表达式(CHECKCHECK)属性上的约束条件的定义属性上的约束条件的定义(续续)n n1.1.不允许取空值不允许取空值 例例5 5 在定义在定义SCSC表时,说明表时,说明SnoSno、CnoCno、GradeGrade属性不允许属性不允许取空值。取空值。CREATE TABLE SCCREATE TABLE SC (SnoSno CHAR(9)CHAR(9)NOT NULLNOT NULL,CnoCno CHAR(4)CHAR(4)NOT

12、 NULLNOT NULL,Grade SMALLINT Grade SMALLINT NOT NULLNOT NULL,PRIMARY KEY(PRIMARY KEY(SnoSno,CnoCno),/*/*如果在表级定义实体完整性,隐含了如果在表级定义实体完整性,隐含了SnoSno,CnoCno不允不允许取空值,则在列级不允许取空值的定义就不必写了许取空值,则在列级不允许取空值的定义就不必写了 */););属性上的约束条件的定义属性上的约束条件的定义(续续)n n2.2.列值唯一列值唯一 例例6 6 建立部门表建立部门表DEPTDEPT,要求部门名称,要求部门名称DnameDname列取值唯

13、列取值唯一,部门编号一,部门编号DeptnoDeptno列为主码列为主码 CREATE TABLE DEPTCREATE TABLE DEPT (DeptnoDeptno NUMERIC(2)NUMERIC(2),DnameDname CHAR(9)CHAR(9)UNIQUEUNIQUE,/*/*要求要求DnameDname列值唯一列值唯一*/Location CHAR(10)Location CHAR(10),PRIMARY KEY(PRIMARY KEY(DeptnoDeptno);属性上的约束条件的定义属性上的约束条件的定义(续续)n n3.3.用用CHECKCHECK短语指定列值应该满

14、足的条件短语指定列值应该满足的条件例例7 7 StudentStudent表的表的SsexSsex只允许取只允许取“男男”或或“女女”。CREATE TABLE StudentCREATE TABLE Student (SnoSno CHAR(9)PRIMARY KEY CHAR(9)PRIMARY KEY,SnameSname CHAR(8)NOT NULL CHAR(8)NOT NULL,SsexSsex CHAR(2)CHAR(2)CHECK(CHECK(SsexSsex IN(IN(男男,女女),/*/*性别属性性别属性SsexSsex只允许取只允许取 男男 或或 女女*/*/Sage

15、 SMALLINT Sage SMALLINT,SdeptSdept CHAR(20)CHAR(20););5.3 用户定义的完整性用户定义的完整性n n5.3.1 属性上的约束条件的定义属性上的约束条件的定义n n5.3.2 属性上的约束条件检查和违约处理属性上的约束条件检查和违约处理 n n5.3.3 元组上的约束条件的定义元组上的约束条件的定义 n n5.3.4元组上的约束条件检查和违约处理元组上的约束条件检查和违约处理5.3.2 属性上的约束条件检查和违约属性上的约束条件检查和违约处理处理n n插入元组或修改属性的值时,RDBMS检查属性上的约束条件是否被满足n n如果不满足则操作被拒

16、绝执行 5.3 用户定义的完整性用户定义的完整性n n5.3.1 属性上的约束条件的定义属性上的约束条件的定义n n5.3.2 属性上的约束条件检查和违约处理属性上的约束条件检查和违约处理 n n5.3.3 元组上的约束条件的定义元组上的约束条件的定义 n n5.3.4元组上的约束条件检查和违约处理元组上的约束条件检查和违约处理5.3.3 元组上的约束条件的定义元组上的约束条件的定义n n在在CREATE TABLECREATE TABLE时可以用时可以用CHECKCHECK短语定义元组短语定义元组上的约束条件,即上的约束条件,即元组级的限制元组级的限制n n同属性值限制相比,元组级的限制可以

17、同属性值限制相比,元组级的限制可以设置不同设置不同属性之间的取值的相互约束条件属性之间的取值的相互约束条件 元组上的约束条件的定义元组上的约束条件的定义(续续)例例9 9 当学生的性别是男时,其名字不能以当学生的性别是男时,其名字不能以Ms.Ms.打头。打头。CREATE TABLE StudentCREATE TABLE Student (SnoSno CHAR(9)CHAR(9),SnameSname CHAR(8)NOT NULL CHAR(8)NOT NULL,SsexSsex CHAR(2)CHAR(2),Sage SMALLINTSage SMALLINT,SdeptSdept C

18、HAR(20)CHAR(20),PRIMARY KEY(PRIMARY KEY(SnoSno),CHECK(CHECK(SsexSsex=女女女女 OR OR SnameSname NOT LIKE Ms.%)NOT LIKE Ms.%)/*/*定义了元组中定义了元组中SnameSname和和 SsexSsex两个属性值之间的约束条件两个属性值之间的约束条件*/);性别是女性的元组都能通过该项检查,因为性别是女性的元组都能通过该项检查,因为SsexSsex=女女 成立;成立;当性别是男性时,要通过检查则名字一定不能以当性别是男性时,要通过检查则名字一定不能以Ms.Ms.打头打头5.3 用户定义

19、的完整性用户定义的完整性n n5.3.1 属性上的约束条件的定义属性上的约束条件的定义n n5.3.2 属性上的约束条件检查和违约处理属性上的约束条件检查和违约处理 n n5.3.3 元组上的约束条件的定义元组上的约束条件的定义 n n5.3.4 元组上的约束条件检查和违约处理元组上的约束条件检查和违约处理5.3.4 元组上的约束条件检查和违约元组上的约束条件检查和违约处理处理n n插入元组或修改属性的值时,插入元组或修改属性的值时,RDBMSRDBMS检查元组上检查元组上的约束条件是否被满足的约束条件是否被满足n n如果不满足则操作被拒绝执行如果不满足则操作被拒绝执行 第五章第五章 数据库完

20、整性数据库完整性5.1 实体完整性实体完整性5.2 参照完整性参照完整性5.3 用户定义的完整性用户定义的完整性5.4 完整性约束命名子句完整性约束命名子句*5.5 域中的完整性限制域中的完整性限制5.6 触发器触发器5.7 小结小结5.4 完整性约束命名子句完整性约束命名子句n nCONSTRAINT 约束CONSTRAINT CONSTRAINT PRIMARY KEYPRIMARY KEY短语短语|FOREIGN KEY|FOREIGN KEY短语短语|CHECK|CHECK短语短语例例1010 建立学生登记表建立学生登记表StudentStudent,要求学号在,要求学号在900009

21、99999000099999之间,之间,姓名不能取空值,年龄小于姓名不能取空值,年龄小于3030,性别只能是,性别只能是“男男”或或“女女”。CREATE TABLE StudentCREATE TABLE Student (SnoSno NUMERIC(6)NUMERIC(6)CONSTRAINT C1 CHECK(CONSTRAINT C1 CHECK(SnoSno BETWEEN 90000 AND 99999)BETWEEN 90000 AND 99999),SnameSname CHAR(20)CHAR(20)CONSTRAINT C2 NOT NULLCONSTRAINT C2 N

22、OT NULL,Sage NUMERIC(3)Sage NUMERIC(3)CONSTRAINT C3 CHECK(Sage 30)CONSTRAINT C3 CHECK(Sage 30),SsexSsex CHAR(2)CHAR(2)CONSTRAINT C4 CHECK(CONSTRAINT C4 CHECK(SsexSsex IN(IN(男男,女女),CONSTRAINT CONSTRAINT StudentKeyStudentKey PRIMARY PRIMARY KEY(SnoKEY(Sno);在在StudentStudent表上建立了表上建立了5 5个约束条件,包括主码约束(命名为

23、个约束条件,包括主码约束(命名为StudentKeyStudentKey)以)以及及C1C1、C2C2、C3C3、C4C4四个列级约束。四个列级约束。完整性约束命名子句完整性约束命名子句(续续)n n2.修改表中的完整性限制修改表中的完整性限制n n使用ALTER TABLE语句修改表中的完整性限制完整性约束命名子句完整性约束命名子句(续续)例例1313 修改表修改表StudentStudent中的约束条件,要求学号改为在中的约束条件,要求学号改为在900000999999900000999999之间,年龄由小于之间,年龄由小于3030改为小于改为小于4040n n可以先删除原来的约束条件,再

24、增加新的约束条件可以先删除原来的约束条件,再增加新的约束条件 ALTER TABLE StudentALTER TABLE Student DROP CONSTRAINT C1;DROP CONSTRAINT C1;ALTER TABLE StudentALTER TABLE Student ADD CONSTRAINT C1 CHECK(ADD CONSTRAINT C1 CHECK(SnoSno BETWEEN 900000 AND BETWEEN 900000 AND 999999)999999),ALTER TABLE StudentALTER TABLE Student DROP C

25、ONSTRAINT C3;DROP CONSTRAINT C3;ALTER TABLE StudentALTER TABLE Student ADD CONSTRAINT C3 CHECK(Sage 40)ADD CONSTRAINT C3 CHECK(Sage 40);第五章第五章 数据库完整性数据库完整性5.1 实体完整性实体完整性5.2 参照完整性参照完整性5.3 用户定义的完整性用户定义的完整性5.4 完整性约束命名字句完整性约束命名字句*5.5 域中的完整性限制域中的完整性限制5.6 触发器触发器5.7 小结小结第五章第五章 数据库完整性数据库完整性5.1 实体完整性实体完整性5.2

26、 参照完整性参照完整性5.3 用户定义的完整性用户定义的完整性5.4 完整性约束命名字句完整性约束命名字句*5.5 域中的完整性限制域中的完整性限制5.6 触发器触发器5.7 小结小结触发器触发器n n触发器(Trigger)是用户定义在关系表上的一类由事件驱动的特殊过程n n由服务器自动激活由服务器自动激活n n可以进行更为复杂的检查和操作,具有更精细可以进行更为复杂的检查和操作,具有更精细和更强大的数据控制能力和更强大的数据控制能力 5.6 触发器触发器n n5.6.1 定义触发器定义触发器 n n5.6.2 激活触发器激活触发器 n n5.6.3 删除触发器删除触发器 5.6.1 定义触

27、发器定义触发器n nCREATE TRIGGER语法格式 CREATE TRIGGER CREATE TRIGGER BEFORE|AFTER BEFORE|AFTER ON ON FOR EACH ROW|STATEMENT FOR EACH ROW|STATEMENT WHEN WHEN 定义触发器定义触发器(续续)n n定义触发器的语法说明:n n1.1.创建者:表的创建者:表的拥有者拥有者n n2.2.触发器名触发器名n n3.3.表名:触发器的目标表表名:触发器的目标表n n4.4.触发事件:触发事件:INSERTINSERT、DELETEDELETE、UPDATEUPDATEn n

28、5.5.触发器类型触发器类型行级触发器(行级触发器(FOR EACH ROWFOR EACH ROW)语句级触发器(语句级触发器(FOR EACH STATEMENTFOR EACH STATEMENT)定义触发器定义触发器(续续)n n例如例如,假设在例假设在例1111的的TEACHERTEACHER表上创建了一表上创建了一个个AFTER UPDATEAFTER UPDATE触发器。如果表触发器。如果表TEACHERTEACHER有有10001000行,执行如下语句:行,执行如下语句:UPDATE TEACHER SET UPDATE TEACHER SET DeptnoDeptno=5;=

29、5;n n如果该触发器为语句级触发器,那么执行完该语句如果该触发器为语句级触发器,那么执行完该语句后,触发动作只发生一次后,触发动作只发生一次n n如果是行级触发器,触发动作将执行如果是行级触发器,触发动作将执行10001000次次 定义触发器定义触发器(续续)n n6.触发条件n n触发条件为真触发条件为真n n省略省略WHENWHEN触发条件触发条件n n7.触发动作体n n触发动作体可以是一个匿名触发动作体可以是一个匿名PL/SQLPL/SQL过程块过程块n n也可以是对已创建存储过程的调用也可以是对已创建存储过程的调用例例例例1818 定义一个定义一个定义一个定义一个BEFOREBEF

30、ORE行级触发器,为教师表行级触发器,为教师表行级触发器,为教师表行级触发器,为教师表TeacherTeacher定义完定义完定义完定义完整性规则整性规则整性规则整性规则“教授的工资不得低于教授的工资不得低于教授的工资不得低于教授的工资不得低于40004000元,如果低于元,如果低于元,如果低于元,如果低于40004000元,自动元,自动元,自动元,自动改为改为改为改为40004000元元元元”。CREATE TRIGGER CREATE TRIGGER Insert_Or_Update_SalInsert_Or_Update_Sal BEFORE BEFORE INSERT OR UPDAT

31、EINSERT OR UPDATE ON Teacher ON Teacher /*/*触发事件是插入或更新操作触发事件是插入或更新操作触发事件是插入或更新操作触发事件是插入或更新操作*/FOR FOR EACH ROWEACH ROW /*/*行级触发器行级触发器行级触发器行级触发器*/AS BEGIN AS BEGIN /*/*定义触发动作体,是定义触发动作体,是定义触发动作体,是定义触发动作体,是PL/SQLPL/SQL过程块过程块过程块过程块*/IF(IF(new.Jobnew.Job=教授教授教授教授)AND()AND(new.Salnew.Sal 4000)THEN 4000)TH

32、EN new.Salnew.Sal:=4000;:=4000;END IF;END IF;END;END;n n:new-:new-为一个引用最新的列值为一个引用最新的列值为一个引用最新的列值为一个引用最新的列值;:old-:old-为一个引用以前的列值为一个引用以前的列值为一个引用以前的列值为一个引用以前的列值;这两个变量只有这两个变量只有这两个变量只有这两个变量只有在使用了关键字在使用了关键字在使用了关键字在使用了关键字 FOR EACH ROWFOR EACH ROW时才存在时才存在时才存在时才存在.n n且且且且updateupdate语句两个都有;语句两个都有;语句两个都有;语句两个

33、都有;n n而而而而insertinsert只有只有只有只有:new:new;n ndelectdelect 只有只有只有只有:old;:old;定义触发器定义触发器(续续)例例例例1919定义定义定义定义AFTERAFTER行级触发器,当教师表行级触发器,当教师表行级触发器,当教师表行级触发器,当教师表TeacherTeacher的的的的工资发生变化后就自动在工资变化表工资发生变化后就自动在工资变化表工资发生变化后就自动在工资变化表工资发生变化后就自动在工资变化表Sal_logSal_log中增加一中增加一中增加一中增加一条相应记录条相应记录条相应记录条相应记录 首先建立工资变化表首先建立工

34、资变化表首先建立工资变化表首先建立工资变化表Sal_logSal_log CREATE TABLE CREATE TABLE Sal_logSal_log (EnoEno NUMERIC(4)references NUMERIC(4)references teacher(enoteacher(eno),Sal NUMERIC(7Sal NUMERIC(7,2)2),Username char(10)Username char(10),Date TIMESTAMPDate TIMESTAMP );定义触发器定义触发器(续续)例例例例1919(续)(续)(续)(续)CREATE TRIGGER C

35、REATE TRIGGER Insert_SalInsert_Sal AFTER INSERTAFTER INSERT ON Teacher ON Teacher /*/*触发事件是触发事件是触发事件是触发事件是INSERT*/INSERT*/FOR EACH ROW FOR EACH ROW AS BEGIN AS BEGIN INSERT INTO INSERT INTO Sal_logSal_log VALUES(VALUES(new.Enonew.Eno,new.Salnew.Sal,CURRENT_USERCURRENT_USER,CURRENT_TIMESTAMP);CURRENT

36、_TIMESTAMP);END;END;定义触发器定义触发器(续续)例例例例1919(续)(续)(续)(续)CREATE TRIGGER CREATE TRIGGER Update_SalUpdate_Sal AFTER UPDATEAFTER UPDATE ON Teacher ON Teacher /*/*触发事件是触发事件是触发事件是触发事件是UPDATE*/UPDATE*/FOR EACH ROW FOR EACH ROW AS BEGIN AS BEGIN IF(IF(new.Salnew.Sal old.Salold.Sal)THEN INSERT INTO)THEN INSERT

37、 INTO Sal_logSal_log VALUES(VALUES(new.Enonew.Eno,new.Salnew.Sal,CURRENT_USERCURRENT_USER,CURRENT_TIMESTAMP);CURRENT_TIMESTAMP);END IF;END IF;END;END;5.6 触发器触发器n n5.6.1 定义触发器定义触发器 n n5.6.2 激活触发器激活触发器 n n5.6.3 删除触发器删除触发器 5.6.2 激活触发器激活触发器n n触发器的执行,是由触发器的执行,是由触发器的执行,是由触发器的执行,是由触发事件激活触发事件激活触发事件激活触发事件激活的

38、,并由数据库服的,并由数据库服的,并由数据库服的,并由数据库服务器自动执行务器自动执行务器自动执行务器自动执行n n一个数据表上可能定义了一个数据表上可能定义了一个数据表上可能定义了一个数据表上可能定义了多个触发器多个触发器多个触发器多个触发器n n同一个表上的多个触发器激活时遵循如下的执行顺序:同一个表上的多个触发器激活时遵循如下的执行顺序:同一个表上的多个触发器激活时遵循如下的执行顺序:同一个表上的多个触发器激活时遵循如下的执行顺序:n n(1 1)执行该表上的执行该表上的执行该表上的执行该表上的BEFOREBEFORE触发器;触发器;触发器;触发器;n n(2 2)激活触发器的激活触发器

39、的激活触发器的激活触发器的SQLSQL语句;语句;语句;语句;n n(3 3)执行该表上的执行该表上的执行该表上的执行该表上的AFTERAFTER触发器。触发器。触发器。触发器。例例例例2020执行执行执行执行修改某个教师工资的修改某个教师工资的修改某个教师工资的修改某个教师工资的SQLSQL语句语句语句语句,激活上述,激活上述,激活上述,激活上述定义的触发器。定义的触发器。定义的触发器。定义的触发器。UPDATE Teacher SET Sal=800 WHERE UPDATE Teacher SET Sal=800 WHERE EnameEname=陈陈陈陈平平平平;执行顺序是:执行顺序是

40、:执行顺序是:执行顺序是:执行触发器执行触发器执行触发器执行触发器Insert_Or_Update_SalInsert_Or_Update_Sal执行执行执行执行SQLSQL语句语句语句语句“UPDATE Teacher SET Sal=800 WHERE UPDATE Teacher SET Sal=800 WHERE EnameEname=陈平陈平陈平陈平;”;”执行触发器执行触发器执行触发器执行触发器Insert_SalInsert_Sal;执行触发器执行触发器执行触发器执行触发器Update_SalUpdate_Sal 5.6 触发器触发器n n5.6.1 定义触发器定义触发器 n n

41、5.6.2 激活触发器激活触发器 n n5.6.3 删除触发器删除触发器 5.6.3 删除触发器删除触发器n n删除触发器的删除触发器的删除触发器的删除触发器的SQLSQL语法:语法:语法:语法:DROP TRIGGER DROP TRIGGER ON ON;n n触发器必须是一个已经创建的触发器,并且只能触发器必须是一个已经创建的触发器,并且只能触发器必须是一个已经创建的触发器,并且只能触发器必须是一个已经创建的触发器,并且只能由具有相应权限的用户删除。由具有相应权限的用户删除。由具有相应权限的用户删除。由具有相应权限的用户删除。例例例例2121 删除教师表删除教师表删除教师表删除教师表Te

42、acherTeacher上的触发器上的触发器上的触发器上的触发器Insert_SalInsert_Sal DROP TRIGGER DROP TRIGGER Insert_SalInsert_Sal ON Teacher;ON Teacher;第五章第五章 数据库完整性数据库完整性5.1 实体完整性实体完整性5.2 参照完整性参照完整性5.3 用户定义的完整性用户定义的完整性5.4 完整性约束命名字句完整性约束命名字句*5.5 域中的完整性限制域中的完整性限制5.6 触发器触发器5.7 小结小结5.7 小结小结n n数据库的完整性是为了保证数据库中存储的数据是正确的n nRDBMS完整性实现的机制n n完整性约束定义机制完整性约束定义机制n n完整性检查机制完整性检查机制n n违背完整性约束条件时违背完整性约束条件时RDBMSRDBMS应采取的动作应采取的动作

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知淘文阁网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号© 2020-2023 www.taowenge.com 淘文阁