书签 分享 收藏 举报 版权申诉 / 49
上传文档赚钱

类型第8章-数据库-数据完整性约束课件.ppt

  • 上传人(卖家):晟晟文业
  • 文档编号:4514469
  • 上传时间:2022-12-16
  • 格式:PPT
  • 页数:49
  • 大小:1.23MB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《第8章-数据库-数据完整性约束课件.ppt》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    数据库 数据 完整性 约束 课件
    资源描述:

    1、第第8 8章章 数据完整性约束数据完整性约束8.1 8.1 数据完整性的概念数据完整性的概念8.2 8.2 实现数据完整性实现数据完整性8.3 8.3 系统对完整性约束的检查系统对完整性约束的检查8.4 8.4 删除约束删除约束8.5 8.5 触发器触发器2022年12月16日3时59分18.1 8.1 数据完整性的概念数据完整性的概念o 数据完整性是指数据的正确性和相容性。如数据完整性是指数据的正确性和相容性。如:n 每个人的身份证号必须是唯一的,每个人的身份证号必须是唯一的,n 人的性别只能是人的性别只能是男男或或女女。o 为了维护数据的完整性,为了维护数据的完整性,DBMSDBMS必须要

    2、提供一种必须要提供一种机制来检查数据库中的数据。机制来检查数据库中的数据。o 这些加在数据库数据之上的语义约束条件就称这些加在数据库数据之上的语义约束条件就称为为数据完整性约束条件数据完整性约束条件。o DBMSDBMS中检查数据是否满足完整性条件的机制就中检查数据是否满足完整性条件的机制就称为称为完整性检查完整性检查。2022年12月16日3时59分2完整性约束条件的作用对象完整性约束条件的作用对象o列级约束列级约束o元组约束元组约束o关系约束关系约束2022年12月16日3时59分3列级约束列级约束o 主要是对列的类型、取值范围、精度等的约束,主要是对列的类型、取值范围、精度等的约束,包括

    3、:包括:n 对数据类型的约束对数据类型的约束:数据类型、长度、精度等:数据类型、长度、精度等例:例:snosno char(8)char(8)n 对数据格式的约束对数据格式的约束:Sno:Sno:2010201001011 10101年年专业专业班号班号序列号序列号n 对取值范围的约束对取值范围的约束:如学生的成绩取值范围为:如学生的成绩取值范围为0 0100100。n 对空值的约束对空值的约束:列:列是否是否允许允许有有空空值值。2022年12月16日3时59分4元组约束元组约束o元组约束是元组中各个字段之间的联元组约束是元组中各个字段之间的联系的约束,如:系的约束,如:n 开始日期小于结束

    4、日期开始日期小于结束日期n 订货数量小于等于库存数量订货数量小于等于库存数量n 最低工资不能低于规定的最低值最低工资不能低于规定的最低值2022年12月16日3时59分5关系约束关系约束o是指若干元组之间、关系之间的联系是指若干元组之间、关系之间的联系的约束。比如的约束。比如:n 学号的取值不能重复也不能取空值学号的取值不能重复也不能取空值n 学生修课表中学号的取值受学生表学生修课表中学号的取值受学生表中学号取值的限制等中学号取值的限制等。2022年12月16日3时59分6实现数据完整性的方法实现数据完整性的方法o 可以在服务器端完成,也可以在客户端可以在服务器端完成,也可以在客户端编程实现。

    5、编程实现。o 在在服务器端服务器端实现数据完整性的方法主要实现数据完整性的方法主要有两种有两种:n 声明数据完整性声明数据完整性n 触发器触发器o 在在客户端客户端实现数据完整性主要是用前端实现数据完整性主要是用前端开发工具,在应用程序中编写代码保证开发工具,在应用程序中编写代码保证。2022年12月16日3时59分78.2 8.2 实现数据完整性实现数据完整性o 设有如下两张表:设有如下两张表:CREATE TABLE CREATE TABLE 职工表职工表(职工编号职工编号 CHAR(7)NOT NULL,CHAR(7)NOT NULL,职工名职工名 CHAR(10)NOT NULL,CH

    6、AR(10)NOT NULL,工作编号工作编号 CHAR(8),CHAR(8),工资工资 SMALLINT,SMALLINT,电话电话 CHAR(8),CHAR(8),身份证号身份证号 CHAR(18)CHAR(18)2022年12月16日3时59分8CREATE TABLE CREATE TABLE 工作表工作表(工作编号工作编号 CHAR(8)NOT NULL,CHAR(8)NOT NULL,最低工资最低工资 SMALLINT,SMALLINT,最高工资最高工资 SMALLINT SMALLINT)1.1.实体完整性约束实体完整性约束o实体完整性是用实体完整性是用PRIMARY KEYPR

    7、IMARY KEY来保证来保证。注意:注意:o每个表只能有一个每个表只能有一个PRIMARY KEYPRIMARY KEY约束;约束;o用用PRIMARY KEYPRIMARY KEY约束的列的取值必须是约束的列的取值必须是不重复的(对由多列构成的主键,是不重复的(对由多列构成的主键,是这些主键列组合起来取值不重),并这些主键列组合起来取值不重),并且不允许有空值且不允许有空值。2022年12月16日3时59分9添加主键约束添加主键约束ALTER TABLE ALTER TABLE 表名表名 ADD CONSTRAINT ADD CONSTRAINT 约束名约束名 PRIMARY KEY PR

    8、IMARY KEY(,n n)2022年12月16日3时59分10示例示例ALTER TABLE ALTER TABLE 职工表职工表 ADD CONSTRAINT PK_EMP ADD CONSTRAINT PK_EMP PRIMARY KEY PRIMARY KEY(职工编号)(职工编号)ALTER TABLE ALTER TABLE 工作表工作表 ADD CONSTRAINT PK_JOB ADD CONSTRAINT PK_JOB PRIMARY KEY PRIMARY KEY(工作编号)(工作编号)2022年12月16日3时59分112.2.唯一值约束唯一值约束o 用用UNIQUEU

    9、NIQUE约束实现,用于限制一个列或者是约束实现,用于限制一个列或者是多个列的组合取值不重复。多个列的组合取值不重复。o 用在事实上具有唯一性的属性列上,比如身用在事实上具有唯一性的属性列上,比如身份证号码、驾驶证号码等份证号码、驾驶证号码等。注意。注意:o 有有UNIQUEUNIQUE约束的列允许有一个空值;约束的列允许有一个空值;o 在一个表中可以定义多个在一个表中可以定义多个UNIQUEUNIQUE约束;约束;o 可以在一个列或多个列上定义可以在一个列或多个列上定义UNIQUEUNIQUE约束;约束;2022年12月16日3时59分12在创建表时定义在创建表时定义UNIQUEUNIQUE

    10、约束约束CREATE TABLE CREATE TABLE 表名(表名(列名列名 类型类型 CONSTRAINT CONSTRAINT 约束名约束名 UNIQUE UNIQUE(,n n),)或者:或者:CREATE TABLE CREATE TABLE 表名(表名(列名列名 类型类型,CONSTRAINT CONSTRAINT 约束名约束名 UNIQUE UNIQUE(,n n)2022年12月16日3时59分13添加添加UNIQUEUNIQUE约束约束ALTER TABLE ALTER TABLE 表名表名 ADD CONSTRAINT ADD CONSTRAINT 约束名约束名 UNIQ

    11、UE UNIQUE(,n n)2022年12月16日3时59分14示例示例创建表时定义创建表时定义o 例例2.2.为为“身份证号身份证号”列添加唯一值约束。列添加唯一值约束。CREATE TABLE CREATE TABLE 职工表(职工表(身份证号身份证号 CHAR(19)CHAR(19)UNIQUEUNIQUE,)或:或:CREATE TABLE CREATE TABLE 职工表(职工表(身份证号身份证号 CHAR(19),CHAR(19),UNIQUE(UNIQUE(身份证号身份证号),)2022年12月16日3时59分15示例示例添加约束添加约束ALTER TABLE ALTER TA

    12、BLE 职工表职工表 ADD CONSTRAINT UN_EMP ADD CONSTRAINT UN_EMP UNIQUE UNIQUE(身份证号)(身份证号)2022年12月16日3时59分16复合唯一约束示例复合唯一约束示例o 例例3.3.设设authorsauthors表,其中表,其中有有au_fnameau_fname和和au_lnameau_lname两个列,现要限制这两个列组合起来不重复。两个列,现要限制这两个列组合起来不重复。CREATE TABLE authors(CREATE TABLE authors(au_fnameau_fname VARCHAR(20),VARCHAR

    13、(20),au_lnameau_lname VARCHAR(20)VARCHAR(20)UNIQUE(au_fnameUNIQUE(au_fname,au_lnameau_lname),-作为列级约束定义作为列级约束定义)2022年12月16日3时59分17复合唯一约束示例复合唯一约束示例CREATE TABLE authors(CREATE TABLE authors(au_fnameau_fname VARCHAR(20),VARCHAR(20),au_lnameau_lname VARCHAR(20),VARCHAR(20),UNIQUE(au_fnameUNIQUE(au_fname,

    14、au_lnameau_lname),-作为表级约束定义作为表级约束定义)182022年12月16日3时59分复合唯一约束示例复合唯一约束示例o在已创建好的表上添加唯一值约束:在已创建好的表上添加唯一值约束:ALTER TABLE authorsALTER TABLE authors ADD CONSTRAINT ADD CONSTRAINT UN_NameUN_Name UNIQUE(UNIQUE(au_fnameau_fname,au_lnameau_lname)2022年12月16日3时59分193.3.参照完整性参照完整性o参照完整性(引用完整性)用参照完整性(引用完整性)用FOREIG

    15、N KEYFOREIGN KEY约束保证约束保证.o定义定义FOREIGN KEYFOREIGN KEY约束时要注意:约束时要注意:n 外键列引用的列必须是有外键列引用的列必须是有PRIMARY PRIMARY KEYKEY约束或约束或UNIQUEUNIQUE约束的列约束的列,通常,通常是有是有PRIMARY KEYPRIMARY KEY约束约束的列的列。2022年12月16日3时59分20添加外键约束添加外键约束ALTER TABLE ALTER TABLE 表名表名 ADD CONSTRAINT ADD CONSTRAINT 约束名约束名 FOREIGN KEY FOREIGN KEY()

    16、REFERENCES REFERENCES 引用表名(引用表名()ON DELETE ON DELETE CASCADE|NO ACTION CASCADE|NO ACTION ON UPDATE ON UPDATE CASCADE|NO ACTION CASCADE|NO ACTION o ON DELETEON DELETE:级联或限制删除;:级联或限制删除;o ON UPDATEON UPDATE:级联或限制更新。:级联或限制更新。2022年12月16日3时59分21删除示例删除示例2022年12月16日3时59分22SnoSnameSsexSageSdept08111010811101

    17、李勇李勇 男男2121计算机系计算机系08111020811102刘晨刘晨 男男2020计算机系计算机系08111030811103王敏王敏 女女2020计算机系计算机系08111040811104张小红张小红 女女1919计算机系计算机系08211010821101张立张立 男男2020信息管理系信息管理系08211020821102吴宾吴宾 女女1919信息管理系信息管理系08211030821103张海张海 男男2020信息管理系信息管理系SnoCnoGrade0811101C001 960811101C002 800811101C003 840811101C005 620811102C

    18、001 920811102C002 900811102C004 840821102C001 760821102C004 850821102C005 730821102C007 NULL0821103C001 500821103C004 8008111020811102刘晨刘晨 男男2020计算机系计算机系0811102C001 920811102C002 900811102C004 84ON DELETE CASCADEON DELETE CASCADEON DELETEON DELETE NO ACTION NO ACTION08111020811102刘晨刘晨 男男2020计算机系计算机系

    19、0811102C001 920811102C002 900811102C004 84更新示例更新示例2022年12月16日3时59分23SnoSnameSsexSageSdept08111010811101李勇李勇 男男2121计算机系计算机系08111020811102刘晨刘晨 男男2020计算机系计算机系08111030811103王敏王敏 女女2020计算机系计算机系08111040811104张小红张小红 女女1919计算机系计算机系08211010821101张立张立 男男2020信息管理系信息管理系08211020821102吴宾吴宾 女女1919信息管理系信息管理系0821103

    20、0821103张海张海 男男2020信息管理系信息管理系SnoCnoGrade0811101C001 960811101C002 800811101C003 840811101C005 620811102C001 920811102C002 900811102C004 840821102C001 760821102C004 850821102C005 730821102C007 NULL0821103C001 500821103C004 8008111020811102刘晨刘晨 男男2020计算机系计算机系0811102C001 920811102C002 900811102C004 84ON

    21、 UPDATE CASCADEON UPDATE CASCADEON UPDATEON UPDATE NO ACTION NO ACTION08111100811110刘晨刘晨 男男2020计算机系计算机系0811110C001 920811110C002 900811110C004 84示例示例o例例4 4 为职工表的为职工表的“工作编号工作编号”列添列添加外键约束,此列引用工作表中的加外键约束,此列引用工作表中的“工作编号工作编号”列。列。ALTER TABLE ALTER TABLE 职工表职工表 ADD CONSTRAINT FK_job_id ADD CONSTRAINT FK_jo

    22、b_id FOREIGN KEY(FOREIGN KEY(工作编号工作编号)REFERENCES REFERENCES 工作表工作表(工作编号工作编号)2022年12月16日3时59分244.4.默认值约束默认值约束o用用DEFAULTDEFAULT约束实现,用于提供列的约束实现,用于提供列的默认值。注意:默认值。注意:o只在向表中插入数据时才检查只在向表中插入数据时才检查DEFAULTDEFAULT约束;约束;o每个列只能有一个每个列只能有一个DEFAULTDEFAULT约束。约束。2022年12月16日3时59分25定义或添加默认值约束定义或添加默认值约束CREATE TABLE CREA

    23、TE TABLE 表名(表名(列名列名 类型类型 CONSTRAINT CONSTRAINT 约束名约束名 DEFAULT DEFAULT 常常量表达式量表达式,)ALTER TABLE ALTER TABLE 表名表名 ADD CONSTRAINT ADD CONSTRAINT 约束名约束名 DEFAULT DEFAULT 常量表达式常量表达式 FOR FOR 列名列名2022年12月16日3时59分26示例示例o 例例5 5 在职工表中,如果某个职工没有电话,则在职工表中,如果某个职工没有电话,则写入默认值:写入默认值:1111111111111111。CREATE TABLE CREAT

    24、E TABLE 职工表职工表(电话电话 CHAR(8)CHAR(8)DEFAULT 11111111 DEFAULT 11111111,)o 或:或:ALTER TABLE ALTER TABLE 职工表职工表 ADD CONSTRAINT DF_PHONE ADD CONSTRAINT DF_PHONE DEFAULT 11111111 FOR DEFAULT 11111111 FOR 电话电话2022年12月16日3时59分275.5.列取值范围约束列取值范围约束o 用用CHECKCHECK约束实现,用于限制列的取值在指定范约束实现,用于限制列的取值在指定范围内,即约束列的取值符合应用语义

    25、,如围内,即约束列的取值符合应用语义,如:n 人的性别只能是人的性别只能是“男男”或或“女女”,n 工资必须大于工资必须大于10001000。o 使用使用CHECKCHECK约束时注意:约束时注意:n 在执行在执行INSERTINSERT语句和语句和UPDATEUPDATE语句时系统自动语句时系统自动检查检查CHECKCHECK约束;约束;n CHECKCHECK约束可以限制一个列的取值范围,也约束可以限制一个列的取值范围,也可以限制同表多列之间的取值约束关系。可以限制同表多列之间的取值约束关系。2022年12月16日3时59分28定义或添加定义或添加CHECKCHECK约束约束CREATE

    26、TABLE CREATE TABLE 表名表名(列名列名 类型类型 CONSTRAINT CONSTRAINT 约束名约束名 CHECK(CHECK(逻辑表达式逻辑表达式),)或:或:ALTER TABLE ALTER TABLE 表名表名 ADD CONSTRAINT ADD CONSTRAINT 约束名约束名 CHECK CHECK(逻辑表达式)(逻辑表达式)2022年12月16日3时59分29示例示例定义定义CHECKCHECK约束约束例例6 6 为职工表定义工资必须大于等于为职工表定义工资必须大于等于10001000的约束。的约束。CREATE TABLE CREATE TABLE 职

    27、工表职工表 (工资工资 SMALLINT SMALLINT CHECK(CHECK(工资工资 =1000)=1000),)o 或者:或者:CREATE TABLE CREATE TABLE 职工表职工表 (工资工资 SMALLINT,SMALLINT,CHECK(CHECK(工资工资 =1000)=1000),)2022年12月16日3时59分30示例示例添加添加CHECKCHECK约束约束ALTER TABLE ALTER TABLE 职工表职工表 ADD CONSTRAINT CHK_SalaryADD CONSTRAINT CHK_Salary CHECK(CHECK(工资工资=1000

    28、)=1000)2022年12月16日3时59分31示例:定义多列取值约束示例:定义多列取值约束o 例例7 7 限制限制“最低工资最低工资”=“最高工资最高工资”。CREATE TABLE CREATE TABLE 工作表(工作表(最低工资最低工资 int,int,最高工资最高工资 int,int,CHECKCHECK(最低工资(最低工资=最高工资)最高工资),)o 注意:多列之间的注意:多列之间的CHECKCHECK约束只能定义在表级约约束只能定义在表级约束处。束处。2022年12月16日3时59分32示例:添加多列取值约束示例:添加多列取值约束ALTER TABLE ALTER TABLE

    29、工作表工作表 ADD CONSTRAINT CHK_Job_Salary ADD CONSTRAINT CHK_Job_Salary CHECK(CHECK(最低工资最低工资=最高工资最高工资)2022年12月16日3时59分33示例示例o例例8 8 限制电话号码列的每一位的取限制电话号码列的每一位的取值必须是值必须是0 0 9 9之间的数字。之间的数字。CHECK CHECK(电话(电话 LIKE 0-90-90-9 LIKE 0-90-90-9 0-90-90-90-90-90-90-90-90-90-9)2022年12月16日3时59分348.3 8.3 系统对完整性约束的检查系统对完整

    30、性约束的检查o 主键约束主键约束:插入插入和更新数据和更新数据时,检查新时,检查新数据的主键值是否与已存在的主键值重数据的主键值是否与已存在的主键值重复,或者新主键值是否为空。复,或者新主键值是否为空。o 唯一值约束唯一值约束:同主键约束。:同主键约束。o 默认值约束默认值约束:插入数据:插入数据且没有为某个列且没有为某个列提供值提供值时检查。时检查。o 列取值范围约束列取值范围约束:插入和修改:插入和修改有列取值有列取值约束的数据检查约束的数据检查。2022年12月16日3时59分35外键外键约束的检查约束的检查对子表对子表o插入数据插入数据时,检查新数据的外键值是时,检查新数据的外键值是否

    31、在主表的主键值范围内。否在主表的主键值范围内。o修改外键修改外键列值时,检查修改后的外键列值时,检查修改后的外键值是否在主表的主键值范围内值是否在主表的主键值范围内。2022年12月16日3时59分36外键外键约束的检查约束的检查对主表对主表o 删除数据删除数据时,检查被删除数据的主键值是否在子时,检查被删除数据的主键值是否在子表中有对它的引用,若无,则删除之;若有,则表中有对它的引用,若无,则删除之;若有,则看是否允许级联删除看是否允许级联删除:n 若允许若允许:则将子表则将子表中相应中相应数据一起删掉;数据一起删掉;n 若不允许若不允许:则删除失败。则删除失败。o 更改主键更改主键列值时,

    32、检查被更改的主键值是否在子列值时,检查被更改的主键值是否在子表中有对它的引用,若无,则更改之;若有,则表中有对它的引用,若无,则更改之;若有,则看是否允许级联更改看是否允许级联更改:n 若允许若允许:则将子表中则将子表中相应数据相应数据一起进行更改;一起进行更改;n 若不允许若不允许:则更改失败则更改失败。2022年12月16日3时59分378.4 8.4 删除约束删除约束ALTER TABLE ALTER TABLE 表名表名 DROP CONSTRAINT DROP CONSTRAINT 约束名约束名o例例9 9 删除在职工表上定义的限制电删除在职工表上定义的限制电话号码的话号码的CHK_

    33、PHONECHK_PHONE约束。约束。ALTER TABLE ALTER TABLE 职工表职工表 DROP CHK_PHONE DROP CHK_PHONE2022年12月16日3时59分388.5 8.5 触发器触发器o是一段由对数据的更改操作引发的是一段由对数据的更改操作引发的自自动执行的代码动执行的代码。更改操作包括更改操作包括:UPDATEUPDATE、INSERTINSERT、DELETEDELETEo通常用于保证业务规则和数据完整性通常用于保证业务规则和数据完整性o主要优点是用户可以用编程的方法实主要优点是用户可以用编程的方法实现复杂的处理逻辑和商业规则,增强现复杂的处理逻辑和

    34、商业规则,增强了数据完整性约束的功能。了数据完整性约束的功能。2022年12月16日3时59分39创建触发器创建触发器CREATE TRIGGER CREATE TRIGGER 触发器名称触发器名称ON ON 表名表名|视图名视图名 FOR|AFTER|INSTEAD OF FOR|AFTER|INSTEAD OF INSERT ,DELETE ,INSERT ,DELETE ,UPDATE UPDATE AS AS SQL SQL 语句语句2022年12月16日3时59分40注意注意o 在一个表上可以建立多个名称不同、类型各异在一个表上可以建立多个名称不同、类型各异的触发器,每个触发器可由所

    35、有三个操作引发的触发器,每个触发器可由所有三个操作引发o 对对AFTERAFTER型型触发器,可以在同一种操作上建立多触发器,可以在同一种操作上建立多个触发器;个触发器;o 对对INSTEAD OFINSTEAD OF型型触发器,在同一种操作上只能触发器,在同一种操作上只能建立一个触发器。建立一个触发器。o 大部分大部分SQLSQL语句都可用在触发器中,但所有的创语句都可用在触发器中,但所有的创建和更改数据库以及数据库对象的语句、所有建和更改数据库以及数据库对象的语句、所有的的DROPDROP语句都不允许在触发器中使用。语句都不允许在触发器中使用。2022年12月16日3时59分41两个特殊的

    36、临时表两个特殊的临时表o 在触发器中可以使用两个特殊的临时表:在触发器中可以使用两个特殊的临时表:n INSERTEDINSERTEDn DELETEDDELETEDo 由系统自动创建,由系统自动创建,结构同建立触发器的表结构结构同建立触发器的表结构o 只能用在触发器代码中。只能用在触发器代码中。o INSERTEDINSERTED:保存保存INSERTINSERT操作中新插入的数据和操作中新插入的数据和UPDATEUPDATE操作中更新后的数据;操作中更新后的数据;o DELETEDDELETED:保存保存DELETEDELETE操作删除的数据和操作删除的数据和UPDATEUPDATE操作中

    37、更新前的数据操作中更新前的数据。2022年12月16日3时59分42后触发型触发器后触发型触发器o当后触发型触发器执行时,引发触发当后触发型触发器执行时,引发触发器执行的数据操作语句已经执行完成器执行的数据操作语句已经执行完成2022年12月16日3时59分43执行到引发触发器执行的操作语句执行到引发触发器执行的操作语句执行触发器执行触发器执行该语句执行该语句示例:示例:维护不同表数据之间的取值约束维护不同表数据之间的取值约束o 例例1.1.针对针对职工表和工作表,限制职工工资必须在相职工表和工作表,限制职工工资必须在相应工作的最低工资到最高工资之间。应工作的最低工资到最高工资之间。CREAT

    38、E Trigger tri_SalaryCREATE Trigger tri_Salary ON ON 职工表职工表 AFTER INSERT,UPDATEAFTER INSERT,UPDATEASAS IF EXISTS(SELECT IF EXISTS(SELECT*FROM FROM 职工表职工表 a a JOIN JOIN 工作表工作表 b ON a.b ON a.工作编号工作编号=b.=b.工作编号工作编号 WHERE WHERE 工资工资 NOT BETWEEN NOT BETWEEN 最低工资最低工资 AND AND 最高工资最高工资)ROLLBACKROLLBACK -撤销操作

    39、撤销操作2022年12月16日3时59分44示例:示例:级联更新级联更新o 例例2.2.对对职工表和工作表,实现工作表到职工表和工作表,实现工作表到工作编号与职工表的工作编号的级联更工作编号与职工表的工作编号的级联更新。新。CREATE Trigger tri_SalaryCREATE Trigger tri_Salary ON ON 工作表工作表 AFTER UPDATEAFTER UPDATEASAS UPDATE UPDATE 职工表职工表 SET SET 工作编号工作编号=(=(SELECT SELECT 工作编号工作编号 FROM INSERTED)FROM INSERTED)WHE

    40、RE WHERE 工作编号工作编号 IN(IN(SELECT SELECT 工作编号工作编号 FROM DELETED)FROM DELETED)2022年12月16日3时59分45前触发型触发器前触发型触发器o指定执行触发器而不是执行引发触发指定执行触发器而不是执行引发触发器执行的器执行的SQLSQL语句,从而替代引发语语句,从而替代引发语句的操作。句的操作。2022年12月16日3时59分46执行到引发触发器执行的操作语句执行到引发触发器执行的操作语句执行触发器执行触发器示例示例o 例例3 3 限制职工工资在最低工资到最高工资之间限制职工工资在最低工资到最高工资之间CREATE Trigg

    41、er tri_SalaryCREATE Trigger tri_Salary ON ON 职工表职工表 INSTEAD OF INSERTINSTEAD OF INSERTASAS IF NOT EXISTS(SELECT IF NOT EXISTS(SELECT*FROM FROM 职工表职工表 a a JOIN JOIN 工作表工作表 b ON a.b ON a.工作编号工作编号 =b.=b.工作编号工作编号 WHERE WHERE 工资工资 NOT BETWEEN NOT BETWEEN 最低工资最低工资 AND AND 最高工资最高工资)INSERT INTO INSERT INTO 职工表职工表SELECT SELECT*FROM INSERTED FROM INSERTED2022年12月16日3时59分47重做操作重做操作删除触发器删除触发器DROP TRIGGER DROP TRIGGER 触发器名触发器名o例例4 4 删除触发器删除触发器tri1tri1。DROP TRIGGER tri1DROP TRIGGER tri12022年12月16日3时59分482022年12月16日3时59分49

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:第8章-数据库-数据完整性约束课件.ppt
    链接地址:https://www.163wenku.com/p-4514469.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库