欢迎来到淘文阁 - 分享文档赚钱的网站! | 帮助中心 好文档才是您的得力助手!
淘文阁 - 分享文档赚钱的网站
全部分类
  • 研究报告>
  • 管理文献>
  • 标准材料>
  • 技术资料>
  • 教育专区>
  • 应用文书>
  • 生活休闲>
  • 考试试题>
  • pptx模板>
  • 工商注册>
  • 期刊短文>
  • 图片设计>
  • ImageVerifierCode 换一换

    Windows Server数据库课件--第05章 数据库完整性(3学时)new.ppt

    • 资源ID:82773810       资源大小:358.50KB        全文页数:52页
    • 资源格式: PPT        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录   QQ登录  
    二维码
    微信扫一扫登录
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Windows Server数据库课件--第05章 数据库完整性(3学时)new.ppt

    数据库系统概论数据库系统概论An Introduction to Database System第五章第五章 数据库完整性数据库完整性1AnIntroductiontoDatabaseSystem第五章第五章第五章第五章 数据库完整性数据库完整性数据库完整性数据库完整性什么是数据库的完整性什么是数据库的完整性什么是数据库的完整性什么是数据库的完整性?n数据的数据的正确性正确性和和相容性相容性n防止不合语义的、不正确的数据进入数据库。防止不合语义的、不正确的数据进入数据库。例例:学生的年龄必须是整数,取值在学生的年龄必须是整数,取值在6-506-50间;间;学生的性别只能是男或女;学生的性别只能是男或女;学生的学号一定是唯一的;学生的学号一定是唯一的;学生所在的系必须是学校已有的系;学生所在的系必须是学校已有的系;n完整性:保证数据库能否真实地反映现实世界完整性:保证数据库能否真实地反映现实世界.区别数据区别数据完整性完整性和和安全性安全性的两个概念。的两个概念。2AnIntroductiontoDatabaseSystem 完整性约束条件是数据模型的组成部分,完整性约束条件是数据模型的组成部分,约束数据库中数据的语义。约束数据库中数据的语义。检查用户发出的操作请求是否违背了完整检查用户发出的操作请求是否违背了完整性约束条件性约束条件。操作违背了完整性约束条件,则采取一定的操作违背了完整性约束条件,则采取一定的操作违背了完整性约束条件,则采取一定的操作违背了完整性约束条件,则采取一定的操作操作操作操作来保证数据的完整性。来保证数据的完整性。来保证数据的完整性。来保证数据的完整性。为保证完整性,为保证完整性,为保证完整性,为保证完整性,DBMSDBMS必须做到:必须做到:必须做到:必须做到:1.1.完整性约束条件定义机制完整性约束条件定义机制2.2.完整性检查机制完整性检查机制3.3.违约反应违约反应 第第第第五五五五章章章章 数据库完整性数据库完整性数据库完整性数据库完整性3AnIntroductiontoDatabaseSystem第第第第五五五五章章章章 数据库完整性数据库完整性数据库完整性数据库完整性5.1 5.1 实体完整性实体完整性5.2 5.2 参照完整性参照完整性5.3 5.3 用户定义完整性用户定义完整性5.4 5.4 完整性约束命名子句完整性约束命名子句5.5 5.5 触发器触发器4AnIntroductiontoDatabaseSystem5.1 5.1 5.1 5.1 实体完整性实体完整性实体完整性实体完整性1.1.实体完整性定义实体完整性定义 在在CREATE TABLECREATE TABLE语句中用语句中用PRIMARY KEYPRIMARY KEY定义定义 码由单字段构成码由单字段构成:定义可以为列级或表级约束;定义可以为列级或表级约束;码由多字段构成:码由多字段构成:定义只能为表级约束;定义只能为表级约束;5AnIntroductiontoDatabaseSystem5.1 5.1 5.1 5.1 实体完整性实体完整性实体完整性实体完整性 例例11在数据库中,定义在数据库中,定义StudentStudent表的表的SnoSno属性为主码。属性为主码。定义在列级约束定义在列级约束:CREATE TABLE Student CREATE TABLE Student (SnoSno CHAR(8),CHAR(8),SnameSname CHAR(8),CHAR(8),Sage INT);Sage INT);定义在表级约束:定义在表级约束:CREATE TABLE Student CREATE TABLE Student (SnoSno CHAR(8)CHAR(8),SnameSname CHAR(8),CHAR(8),Sage INT Sage INT,););PRIMARY KEY,PRIMARY KEY(Sno););6AnIntroductiontoDatabaseSystem5.1 5.1 5.1 5.1 实体完整性实体完整性实体完整性实体完整性 例例22在在SCSC表中定义表中定义(Sno,CnoSno,Cno)为主码。为主码。CREATE TABLE SC CREATE TABLE SC (SnoSno CHAR(5),CHAR(5),CnoCno CHAR(2),CHAR(2),Grade SMALLINT,Grade SMALLINT,PRIMARY KEY(PRIMARY KEY(SnoSno,CnoCno););7AnIntroductiontoDatabaseSystem5.1 5.1 5.1 5.1 实体完整性实体完整性实体完整性实体完整性2.2.2.2.实体完整性检查和违约处理实体完整性检查和违约处理实体完整性检查和违约处理实体完整性检查和违约处理 (1)(1)完整性检查完整性检查 当用户进行当用户进行插入记录插入记录或或修改主码修改主码时,时,DBMSDBMS系统自系统自动检查:动检查:检查主码值是否惟一;检查主码值是否惟一;检查每个主属性值是否为空。检查每个主属性值是否为空。(2)(2)违约处理违约处理 拒绝插入或修改操作。拒绝插入或修改操作。8AnIntroductiontoDatabaseSystem5.1 5.1 5.1 5.1 实体完整性实体完整性实体完整性实体完整性2.2.2.2.实体完整性检查和违约处理实体完整性检查和违约处理实体完整性检查和违约处理实体完整性检查和违约处理 (3)(3)检查主码是否惟一的方法检查主码是否惟一的方法 全表扫描全表扫描依次判断表中每一个记录的主码值与插入记依次判断表中每一个记录的主码值与插入记录的主码值是否一致。录的主码值是否一致。缺点缺点:效率低:效率低 利用主码的利用主码的B B索引索引优点优点:效率高:效率高9AnIntroductiontoDatabaseSystem5.1 5.1 5.1 5.1 实体完整性实体完整性实体完整性实体完整性keyF1F2F332520159379658471517304154656968255112 3066 783 715 20 25 30 4151 54 6568 69 71 7679 84 9310AnIntroductiontoDatabaseSystem第第第第五五五五章章章章 数据库完整性数据库完整性数据库完整性数据库完整性5.1 5.1 实体完整性实体完整性5.2 5.2 参照完整性参照完整性5.3 5.3 用户定义完整性用户定义完整性5.4 5.4 完整性约束命名子句完整性约束命名子句5.5 5.5 触发器触发器11AnIntroductiontoDatabaseSystem5.2 5.2 5.2 5.2 参照完整性参照完整性参照完整性参照完整性1.1.1.1.参照完整性定义参照完整性定义参照完整性定义参照完整性定义 在在CREATE TABLECREATE TABLE语句中:语句中:用用 FOREIGN KEY FOREIGN KEY 短语定义外码列;短语定义外码列;用用 REFERENCES REFERENCES 短语指明外码参照哪个表的主短语指明外码参照哪个表的主码。码。12AnIntroductiontoDatabaseSystem5.2 5.2 5.2 5.2 参照完整性参照完整性参照完整性参照完整性 例例33在在SCSC表中的参照完整性。表中的参照完整性。CREATE TABLE SC CREATE TABLE SC CREATE TABLE SC CREATE TABLE SC (SnoSnoSnoSno CHAR(8)CHAR(8)CHAR(8)CHAR(8)NOT NULLNOT NULLNOT NULLNOT NULL,CnoCnoCnoCno CHAR(3)NOT NULL,CHAR(3)NOT NULL,CHAR(3)NOT NULL,CHAR(3)NOT NULL,Grade SMALLINT,Grade SMALLINT,Grade SMALLINT,Grade SMALLINT,PRIMARY KEY(PRIMARY KEY(PRIMARY KEY(PRIMARY KEY(SnoSnoSnoSno,CnoCnoCnoCno),),),),FOREIGN KEY(FOREIGN KEY(FOREIGN KEY(FOREIGN KEY(CnoCnoCnoCno)REFERENCES)REFERENCES)REFERENCES)REFERENCES course(Cnocourse(Cnocourse(Cnocourse(Cno)ON DELETE CASCADEON DELETE CASCADEON DELETE CASCADEON DELETE CASCADE ););););REFERENCES REFERENCES REFERENCES REFERENCES student(Snostudent(Snostudent(Snostudent(Sno),),),),13AnIntroductiontoDatabaseSystem5.2 5.2 5.2 5.2 参照完整性参照完整性参照完整性参照完整性 例例33在在SCSC表中的参照完整性。表中的参照完整性。ALTER TABLE SC ALTER TABLE SC ALTER TABLE SC ALTER TABLE SC ADD FOREIGN KEY(SNO)ADD FOREIGN KEY(SNO)ADD FOREIGN KEY(SNO)ADD FOREIGN KEY(SNO)REFERENCES STUDENT(SNO)REFERENCES STUDENT(SNO)REFERENCES STUDENT(SNO)REFERENCES STUDENT(SNO)14AnIntroductiontoDatabaseSystem2.2.参照完整性检查和违约处理参照完整性检查和违约处理参照完整性检查和违约处理参照完整性检查和违约处理 对被对被参照表和参照表进行参照表和参照表进行增、删、改增、删、改操作操作时进行检查时进行检查有四种情况可能破坏参照完整性:有四种情况可能破坏参照完整性:参照表中参照表中l插入一个新元组;插入一个新元组;l修改外码值;修改外码值;被参照表中被参照表中l删除一个元组;删除一个元组;l修改主码值。修改主码值。5.2 5.2 5.2 5.2 参照完整性参照完整性参照完整性参照完整性15AnIntroductiontoDatabaseSystem 当参照完整性不一致时,系统采取以下策略:当参照完整性不一致时,系统采取以下策略:n拒绝执行拒绝执行(默认策略)(默认策略)n级联操作级联操作(CASCADE)当删除或修改被参照表的一个元组造成与当删除或修改被参照表的一个元组造成与参照表不一致时,则删除或修改参照表中所有参照表不一致时,则删除或修改参照表中所有不一致的元组。不一致的元组。n设置为空设置为空(SET-NULL)当删除或修改被参照表的一个元组造成与当删除或修改被参照表的一个元组造成与参照表不一致时,则将参照表中所有造成不一参照表不一致时,则将参照表中所有造成不一致的元组对应属性置空。致的元组对应属性置空。5.2 5.2 5.2 5.2 参照完整性参照完整性参照完整性参照完整性 定义参照完整性时,除了定义外码,还应定义参照完整性时,除了定义外码,还应定义外码是否允许为空。定义外码是否允许为空。16AnIntroductiontoDatabaseSystem例:要删除例:要删除StudentStudent关系中关系中SnoSno=950001950001的元组,而的元组,而SCSC关系中有关系中有4 4个元组个元组的的SnoSno都等于都等于950001950001。n置空值删除置空值删除:将将SCSC关系中所有关系中所有SnoSno=950001=950001的元组的元组SnoSno置空。置空。n级联删除级联删除:将将SCSC关系中所有关系中所有4 4个个SnoSno=950001=950001的元组一的元组一起删除。依此类推可以继续级联下去。起删除。依此类推可以继续级联下去。n受限删除受限删除:系统将拒绝执行此删除操作。系统将拒绝执行此删除操作。5.2 5.2 5.2 5.2 参照完整性参照完整性参照完整性参照完整性17AnIntroductiontoDatabaseSystem第第第第五五五五章章章章 数据库完整性数据库完整性数据库完整性数据库完整性5.1 5.1 实体完整性实体完整性5.2 5.2 参照完整性参照完整性5.3 5.3 用户定义完整性用户定义完整性5.4 5.4 完整性约束命名子句完整性约束命名子句5.5 5.5 触发器触发器18AnIntroductiontoDatabaseSystem5.3 5.3 5.3 5.3 用户定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性1.1.1.1.属性上约束条件的定义属性上约束条件的定义属性上约束条件的定义属性上约束条件的定义 使用使用CREATE TABLECREATE TABLE语句在定义属性的同时,语句在定义属性的同时,定义定义对属性值的限制对属性值的限制。包括:包括:列值非空列值非空(NOT NULL)(NOT NULL)列值唯一列值唯一(UNIQUE)(UNIQUE)检查列值是否满足一个布尔表达式检查列值是否满足一个布尔表达式(CHECK(CHECK子子句句)。19AnIntroductiontoDatabaseSystem5.3 5.3 5.3 5.3 用户定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性 (1)(1)不允许取空值不允许取空值 例例例例5555在定义在定义在定义在定义SCSCSCSC表时,说明表时,说明表时,说明表时,说明SnoSnoSnoSno、CnoCnoCnoCno属性不取空属性不取空属性不取空属性不取空 CREATE TABLE SC CREATE TABLE SC (SnoSno CHAR(5)CHAR(5)NOT NULLNOT NULL,CnoCno CHAR(2)CHAR(2)NOT NULLNOT NULL,Grade SMALLINT,Grade SMALLINT,PRIMARY KEY(PRIMARY KEY(SnoSno,CnoCno););20AnIntroductiontoDatabaseSystem5.3 5.3 5.3 5.3 用户定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性(2)(2)列值惟一列值惟一 例例例例6666建立部门表建立部门表建立部门表建立部门表DeptDeptDeptDept,要求部门名称,要求部门名称,要求部门名称,要求部门名称DnameDnameDnameDname惟一,惟一,惟一,惟一,部门编号为主码。部门编号为主码。部门编号为主码。部门编号为主码。CREATE TABLE Dept CREATE TABLE Dept (DnoDno NUMERIC(2)NOT NULL,NUMERIC(2)NOT NULL,DnameDname CHAR(20)CHAR(20)UNIQUE UNIQUE,Location CHAR(10),Location CHAR(10),PRIMARY KEY(PRIMARY KEY(DnoDno););21AnIntroductiontoDatabaseSystem5.3 5.3 5.3 5.3 用户定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性(2)(2)列值惟一列值惟一 例例例例6666补充补充补充补充 若部门表若部门表若部门表若部门表DeptDeptDeptDept已建立,添加部门名称已建立,添加部门名称已建立,添加部门名称已建立,添加部门名称DnameDnameDnameDname惟一的约束。惟一的约束。惟一的约束。惟一的约束。ALTER TABLE Dept ALTER TABLE Dept ADD ADD UNIQUE(DnameUNIQUE(Dname););22AnIntroductiontoDatabaseSystem5.3 5.3 5.3 5.3 用户定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性 例例例例7Student7Student7Student7Student表中表中表中表中SsexSsexSsexSsex只允许取只允许取只允许取只允许取“男男男男”和和和和“女女女女”。CREATE TABLE Student CREATE TABLE Student (SnoSno CHAR(5)PRIMARY KEY,CHAR(5)PRIMARY KEY,SnameSname CHAR(8)NOT NULL,CHAR(8)NOT NULL,SsexSsex CHAR(2)CHECK CHAR(2)CHECK(SsexSsex IN(IN(男男男男,女女女女),Sage SMALLINT,Sage SMALLINT,SdeptSdept CHAR(20)CHAR(20););(3)(3)用用CHECKCHECK短语短语指定列值应该满足的条件指定列值应该满足的条件23AnIntroductiontoDatabaseSystem5.3 5.3 5.3 5.3 用户定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性 例例例例7777补充补充补充补充 向向向向StudentStudentStudentStudent表添加表添加表添加表添加SsexSsexSsexSsex只许取只许取只许取只许取“男男男男”和和和和“女女女女”的的的的约束。约束。约束。约束。ALTER TABLE Student ALTER TABLE Student ADD CHECK ADD CHECK(SsexSsex IN(IN(男男男男,女女女女););(3)(3)用用CHECKCHECK短语短语指定列值应该满足的条件指定列值应该满足的条件24AnIntroductiontoDatabaseSystem5.3 5.3 5.3 5.3 用户定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性 例例例例8888在定义在定义在定义在定义SCSCSCSC表时,说明表时,说明表时,说明表时,说明GradeGradeGradeGrade应该在应该在应该在应该在0 0 0 0和和和和100100100100之间。之间。之间。之间。CREATE TABLE SC CREATE TABLE SC (SnoSno CHAR(5)NOT NULL,CHAR(5)NOT NULL,CnoCno CHAR(2)NOT NULL,CHAR(2)NOT NULL,Grade SMALLINT Grade SMALLINT CHECK(Grade=0 CHECK(Grade=0 AND Grade=100),AND Grade=100),PRIMARY KEY(PRIMARY KEY(SnoSno,CnoCno););(3)(3)用用CHECKCHECK短语短语指定列值应该满足的条件指定列值应该满足的条件25AnIntroductiontoDatabaseSystem5.3 5.3 5.3 5.3 用户定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性2.2.属性上约束条件检查和违约处理属性上约束条件检查和违约处理 当往表中当往表中插入插入元组或元组或修改修改属性的值时,属性的值时,RDBMSRDBMS就就检查属性上的约束条件检查属性上的约束条件是否被满足,是否被满足,如果不满足操作被拒绝执行。如果不满足操作被拒绝执行。26AnIntroductiontoDatabaseSystem5.3 5.3 5.3 5.3 用户定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性3.3.3.3.元组上的约束条件的定义元组上的约束条件的定义元组上的约束条件的定义元组上的约束条件的定义 在在CREATE TABLECREATE TABLE语句可以用语句可以用CHECKCHECK短语定义元组短语定义元组上的约束条件,即元组级限制上的约束条件,即元组级限制 元组级限制可以设置不同属性之间的取值的相互元组级限制可以设置不同属性之间的取值的相互约束条件。约束条件。27AnIntroductiontoDatabaseSystem5.3 5.3 5.3 5.3 用户定义的完整性用户定义的完整性用户定义的完整性用户定义的完整性3.3.3.3.元组上的约束条件的定义元组上的约束条件的定义元组上的约束条件的定义元组上的约束条件的定义 在在CREATE TABLECREATE TABLE语句可以用语句可以用CHECKCHECK短语定义元组短语定义元组上的约束条件,即元组级限制上的约束条件,即元组级限制 元组级限制可以设置不同属性之间的取值的相互元组级限制可以设置不同属性之间的取值的相互约束条件。约束条件。4.4.4.4.元组上的约束条件检查和违约处理元组上的约束条件检查和违约处理元组上的约束条件检查和违约处理元组上的约束条件检查和违约处理 例:当学生的性别是男时,姓名不能以例:当学生的性别是男时,姓名不能以例:当学生的性别是男时,姓名不能以例:当学生的性别是男时,姓名不能以Ms.Ms.Ms.Ms.开头开头开头开头 28AnIntroductiontoDatabaseSystem第第第第五五五五章章章章 数据库完整性数据库完整性数据库完整性数据库完整性5.1 5.1 实体完整性实体完整性5.2 5.2 参照完整性参照完整性5.3 5.3 用户定义完整性用户定义完整性5.4 5.4 完整性约束命名子句完整性约束命名子句5.5 5.5 触发器触发器29AnIntroductiontoDatabaseSystem5.4 5.4 5.4 5.4 完整性约束命名子句完整性约束命名子句完整性约束命名子句完整性约束命名子句 SQLSQL在提供了完整性约束命名子句在提供了完整性约束命名子句 CONSTRAINTCONSTRAINT,用来对完整性约束条件进行命名。用来对完整性约束条件进行命名。1.1.1.1.完整性约束命名子句完整性约束命名子句完整性约束命名子句完整性约束命名子句 格式:格式:CONSTRAINT CONSTRAINT PRIMARY KEY PRIMARY KEY短语短语|FOREIGN KEY FOREIGN KEY短语短语|CHECK CHECK短语短语 放置在任何一个放置在任何一个约束短语的前面。约束短语的前面。30AnIntroductiontoDatabaseSystem 例例例例10101010建立学生表建立学生表建立学生表建立学生表studentstudentstudentstudent,姓名不能取空值,年龄小,姓名不能取空值,年龄小,姓名不能取空值,年龄小,姓名不能取空值,年龄小于于于于30303030,性别只能取,性别只能取,性别只能取,性别只能取“男男男男”或或或或“女女女女”。CREATE TABLE StudentCREATE TABLE Student (SnoSno NUMERIC(6)NUMERIC(6)SnameSname CHAR(8)CHAR(8)NOT NULL,NOT NULL,SsexSsex CHAR(2)CHAR(2)CHECK(SsexCHECK(Ssex IN(IN(男男男男,女女女女),),Sage INTSage INT CHECK(SageCHECK(Sage 30),30),PRIMARY PRIMARY KEY(SnoKEY(Sno););CONSTRAINT C1CONSTRAINT C1 CONSTRAINTCONSTRAINT C2C2 CONSTRAINT C3CONSTRAINT C3 CONSTRAINT CONSTRAINT StuKeyStuKey 31AnIntroductiontoDatabaseSystem5.4 5.4 5.4 5.4 完整性约束命名子句完整性约束命名子句完整性约束命名子句完整性约束命名子句 2.2.2.2.修改表中的完整性限制修改表中的完整性限制修改表中的完整性限制修改表中的完整性限制 (1)(1)(1)(1)删除完整性限制删除完整性限制删除完整性限制删除完整性限制 格式:格式:DROP CONSTRAINT DROP CONSTRAINT 定义约束时未命名,系统会自动命名。定义约束时未命名,系统会自动命名。例例例例12 12 12 12 去掉去掉去掉去掉 例例例例10 student10 student10 student10 student表中对性别的限制。表中对性别的限制。表中对性别的限制。表中对性别的限制。ALTER TABLE Student ALTER TABLE Student DROP DROP CONSTRAINTCONSTRAINT C3;C3;不能独立使不能独立使用用 (2)(2)(2)(2)修改完整性限制修改完整性限制修改完整性限制修改完整性限制 先删除,先删除,再添加。再添加。32AnIntroductiontoDatabaseSystem第第第第五五五五章章章章 数据库完整性数据库完整性数据库完整性数据库完整性5.1 5.1 实体完整性实体完整性5.2 5.2 参照完整性参照完整性5.3 5.3 用户定义完整性用户定义完整性5.4 5.4 完整性约束命名子句完整性约束命名子句5.5 5.5 触发器触发器33AnIntroductiontoDatabaseSystem5.5 5.5 5.5 5.5 触发器触发器触发器触发器1.1.1.1.触发器触发器触发器触发器 (1)(1)(1)(1)什么是触发器?什么是触发器?什么是触发器?什么是触发器?触发器是一种特殊的存储过程触发器是一种特殊的存储过程 作用:作用:用来实现当使用用来实现当使用update update、insertinsert、deletedelete语句对表进行操作时,语句对表进行操作时,自动触发自动触发的处理方法;的处理方法;实现复杂的业务要求,类似于实现复杂的业务要求,类似于约束约束 保证数据的一致性。保证数据的一致性。34AnIntroductiontoDatabaseSystem5.5 5.5 5.5 5.5 触发器触发器触发器触发器1.1.1.1.触发器触发器触发器触发器 (2)(2)(2)(2)触发器的分类触发器的分类触发器的分类触发器的分类 After触发器:(默认类型)触发器:(默认类型)触发触发Insert、Update、Delete动作之后执行。动作之后执行。(表中数据已经变动之后)(表中数据已经变动之后)Instead of触发器:触发器:当执行当执行Insert、Update、Delete操作时用其操作时用其它操作来代替。它操作来代替。(操作不做,是完成触发器定义的操作操作不做,是完成触发器定义的操作)35AnIntroductiontoDatabaseSystem5.5 5.5 5.5 5.5 触发器触发器触发器触发器2.2.2.2.定义触发器定义触发器定义触发器定义触发器 无论在无论在“企业管理器企业管理器”和和“查询分析器查询分析器”中,都中,都用用CREATE TRIGGERCREATE TRIGGER语句创建触发器。语句创建触发器。格式:格式:(P161)Create Trigger on for|after|instead of delete,insert,update as 触发器的类型触发器的类型触发事件触发事件36AnIntroductiontoDatabaseSystem5.5 5.5 5.5 5.5 触发器触发器触发器触发器 例例例例1111创建一个向学生表添加新记录时显示欢迎信创建一个向学生表添加新记录时显示欢迎信创建一个向学生表添加新记录时显示欢迎信创建一个向学生表添加新记录时显示欢迎信息的触发器。息的触发器。息的触发器。息的触发器。Create Trigger T_InOn studentafter insertasprint 欢迎新同学的到来!欢迎新同学的到来!37AnIntroductiontoDatabaseSystem5.5 5.5 5.5 5.5 触发器触发器触发器触发器3.3.3.3.触发器工作原理触发器工作原理触发器工作原理触发器工作原理 (1)(1)触发器工作时建立两个表:触发器工作时建立两个表:inserted表:表:存储存储insert和和update语句所影响的数据行副本语句所影响的数据行副本 insertedinserted中的行是触发器表中新行的副本。中的行是触发器表中新行的副本。deleted表:表:存储存储delete和和update语句所影响的数据行副本语句所影响的数据行副本 deleted中的行是从触发器表中删除的行。中的行是从触发器表中删除的行。触发器表和触发器表和deleted表没有相同的行表没有相同的行 38AnIntroductiontoDatabaseSystem5.5 5.5 5.5 5.5 触发器触发器触发器触发器3.3.3.3.触发器工作原理触发器工作原理触发器工作原理触发器工作原理 (2)(2)这两个表的特点:这两个表的特点:系统自动维护系统自动维护 对用户而言,是只读的对用户而言,是只读的 表结构与触发器作用的表结构相同表结构与触发器作用的表结构相同 与触发器同时存在与触发器同时存在 (触发器运行结束,系统自动删除这两表)(触发器运行结束,系统自动删除这两表)39AnIntroductiontoDatabaseSystem5.5 5.5 5.5 5.5 触发器触发器触发器触发器3.3.3.3.触发器工作原理触发器工作原理触发器工作原理触发器工作原理 (3)(3)各种操作时触发器的工作:各种操作时触发器的工作:insertinsertinsertinsert操作时触发器的工作操作时触发器的工作操作时触发器的工作操作时触发器的工作 insert insert触发器将触发执行触发器将触发执行 新记录会添加到基本表和新记录会添加到基本表和insertedinserted表。表。deletedeletedeletedelete操作时触发器的工作操作时触发器的工作操作时触发器的工作操作时触发器的工作 delete delete触发器将触发执行触发器将触发执行 被删除的记录会存放到被删除的记录会存放到deleteddeleted表中。表中。updateupdateupdateupdate操作时触发器的工作操作时触发器的工作操作时触发器的工作操作时触发器的工作 相当于插入一条新纪录,删除一条旧记录。相当于插入一条新纪录,删除一条旧记录。40AnIntroductiontoDatabaseSystem5.5 5.5 5.5 5.5 触发器触发器触发器触发器 例例例例2222创建一个限制年龄不能小于创建一个限制年龄不能小于创建一个限制年龄不能小于创建一个限制年龄不能小于10101010的触发器的触发器的触发器的触发器 CREATE TRIGGER t1 on StudentFOR Insert,UpdateASIF()10 BEGIN PRINT 年龄不能小于年龄不能小于10,操作失败,操作失败 ROLLBACK END;select sage from insertedselect sage from inserted41AnIntroductiontoDatabaseSystem5.5 5.5 5.5 5.5 触发器触发器触发器触发器4.4.4.4.建立触发器的条件建立触发器的条件建立触发器的条件建立触发器的条件 CREATE TRIGGER语句必须是批处理语句中的语句必须是批处理语句中的第一条;第一条;只有只有表的拥有者表的拥有者可以创建触发器;可以创建触发器;一个表只能创建一定数量的触发器;一个表只能创建一定数量的触发器;在同一在同一模式模式下,触发器名必须惟一;下,触发器名必须惟一;当触发器被激活时,只有触发条件为真时触发动当触发器被激活时,只有触发条件为真时触发动作体才执行。作体才执行。42AnIntroductiontoDatabaseSystem5.5 5.5 5.5 5.5 触发器触发器触发器触发器 例例例例3333为为为为studentstudentstudentstudent表建立一个触发器表建立一个触发器表建立一个触发器表建立一个触发器t2t2t2t2,禁止删除学号,禁止删除学号,禁止删除学号,禁止删除学号为为为为0215122021512202151220215122的学生的学生的学生的学生create trigger t2 on studentfor update,deleteas if(select sno from deleted)=0215122)begin print 不允许删除该学生,操作失败!不允许删除该学生,操作失败!rollback end43AnIntroductiontoDatabaseSystem5.5 5.5 5.5 5.5 触发器触发器触发器触发器 例例例例4444为为为为studentstudentstudentstudent表建立一个触发器表建立一个触发器表建立一个触发器表建立一个触发器t3t3t3t3,实现在更新中,实现在更新中,实现在更新中,实现在更新中学号不可改变的要求。学号不可改变的要求。学号不可改变的要求。学号不可改变的要求。CREATE TRIGGER t3 ON Student FOR Update AS IF Update(sno)BEGIN PRINT 学号不允许修改!学号不允许修改!ROLLBACK END 44AnIntroductiontoDatabaseSystem5.5 5.5 5.5 5.5 触发器触发器触发器触发器 例例例例5555建立触发器建立触发器建立触发器建立触发器t4t4t4t4,要求插入的年龄值比表中记录的,要求插入的年龄值比表中记录的,要求插入的年龄值比表中记录的,要求插入的年龄值比表中记录的SageSageSageSage都大都大都大都大。create trigger t4 on student for update,insert as if(select sage from inserted)=(select sage from inserted)=(select (select max(sagemax(sage)from student)from student)begin print rollback end 例例例例66建立触发器建立触发器建立触发器建立触发器t5t5,要求修改的年龄比原来的,要求修改的年龄比原来的,要求修改的年龄比原来的,要求修改的年龄比原来的SageSage大大大大45AnIntroductiontoDatabaseSystem5.5 5.5 5.5 5.5 触发器触发器触发器触发器 例例例例6666定义触发器,要求为教师表定义触发器,要求为教师表定义触发器,要求为教师表定义触发器,要求为教师表teacherteacherteacherteacher插入或修改插入或修改插入或修改插入或修改信息时教授的工资不能低于信息时教授的工资不能低于信息时教授的工资不能低于信息时教授的工资不能低于4000400040004000,如果低于,如果低于,如果低于,如果低于4000400040004000,自,自,自,自动改为动改为动改为动改为4000400040004000。create trigger t6 on teachercreate trigger t6 on teachercreate trigger t6 on teachercreate trigger t6 on teacherfor for

    注意事项

    本文(Windows Server数据库课件--第05章 数据库完整性(3学时)new.ppt)为本站会员(s****8)主动上传,淘文阁 - 分享文档赚钱的网站仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知淘文阁 - 分享文档赚钱的网站(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于淘文阁 - 版权申诉 - 用户使用规则 - 积分规则 - 联系我们

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

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

    收起
    展开