数据库的安全性和完整性
完整性:数据库安全性与完整性(共47张PPT)

• ●正确性(correctness) 是指数据的合法性,例如数值型数据中只能含有(hán yǒu) 数字而不能含有(hán yǒu)字母。
• ●有效性(valid) 是指数据是否属于所定义域的有效范围。
第五页,共四十七页。
第7章 数据库安全性与完整性:
7.1.4 DBMS安全性保护(bǎohù)(2)
• 2.存取控制
• 在存取控制技术中,DBMS所管理的全体实体分为主 体和客体两类。
• 主体(Subject)是系统(xìtǒng)中的活动实体,它包括 DBMS所管理的实际用户,也包括代表用户的各种进 程。客体(Object)是系统(xìtǒng)中的被动实体,是受 主体操纵的,包括文件、基本表、索引和视图等。
属性(shǔxìng)A不能取空值
第十九页,共四十七页。
第7章 数据库安全性与完整性:
7.2.1 完整性基本概念(5)
• (2)参照完整性规则
• 如果属性或属性组F是基本(jīběn)表R的外键,它与基本(jīběn) 表S的主键Ks相对应(这里R和S不一定是两个不同的关 系),则对于R中每个元组在F上的取值应当满足:
第四页,共四十七页。
第7章 数据库安全性与完整性:
7.1.4 DBMS安全性保护(bǎohù)(1)
• 1.身份标识与鉴别
• 用户(yònghù)身份标识与鉴别(Identification And Authentication)是系统提供的最外层安全保护措施。 其方法是每个用户(yònghù)在系统中必须有一个标志自 己身份的标识符,用以和其它用户(yònghù)相区别。当 用户(yònghù)进入系统时,由系统将用户(yònghù)提供的身 份标识与系统内部记录的合法用户(yònghù)标识进行核 对,通过鉴别后方提供数据库的使用权
数据库的安全性、完整性、并发控制和恢复

数据库的安全性、完好性、并发控制和恢复为了保证数据库数据的安全靠谱性和正确有效, DBMS 一定供给一致的数据保护功能。
数据保护也为数据控制,主要包含数据库的安全性、完好性、并发控制和恢复。
数据库的安全性数据库的安全性是指保护数据库以防备不合法的使用所造成的数据泄漏、改正或损坏。
计算机系统都有这个问题,在数据库系统中大批数据集中寄存,为很多用户共享,使安全问题更加突出。
在一般的计算机系统中,安全举措是一级一级设置的。
在 DB 储存这一级可采纳密码技术,当物理储存设施失窃后,它起到保密作用。
在数据库系统这一级中供给两种控制:用户表记和判定,数据存取控制。
在 ORACLE 多用户数据库系统中,安全体制作以下工作:防备非受权的数据库存取;防备非受权的对模式对象的存取;控制磁盘使用;控制系统资源使用;审计用户动作。
数据库安全可分为二类:系统安全性和数据安全性。
系统安全性是指在系统级控制数据库的存取和使用的体制,包含:有效的用户名 /口令的组合;一个用户能否受权可连结数据库;用户对象可用的磁盘空间的数目;用户的资源限制;数据库审计是不是有效的;用户可履行哪些系统操作。
数据安全性是指在对象级控制数据库的存取和使用的体制,包含:哪些用户可存取一指定的模式对象及在对象上同意作哪些操作种类。
在 ORACLE 服务器上供给了一种随意存取控制,是一种鉴于特权限制信息存取的方法。
用户要存取一对象一定有相应的特权授给该用户。
已受权的用户可随意地可将它受权给其余用户,因为这个原由,这类安全性种类叫做随意型。
ORACLE 利用以下体制管理数据库安全性:数据库用户和模式;特权;角色;储存设置和空间份额;资源限制;审计。
数据库的存取控制ORACLE保护信息的方法采纳随意存取控制来控制所有用户对命名对象的存取。
用户对对象的存取受特权控制。
一种特权是存取一命名对象的同意,为一种规定格式。
ORACLE 使用多种不一样的体制管理数据库安全性,此中有两种体制:模式和用户。
数据库的安全性与完整性【模板范本】

4 数据库的安全性与完整性数据库在各种信息系统中得到广泛的应用,数据在信息系统中的价值越来越重要,数据库系统的安全与保护成为一个越来越值得重要关注的方面。
数据库系统中的数据由DBMS统一管理与控制,为了保证数据库中数据的安全、完整和正确有效,要求对数据库实施保护,使其免受某些因素对其中数据造成的破坏。
一般说来,对数据库的破坏来自以下4个方面:(1)非法用户非法用户是指那些未经授权而恶意访问、修改甚至破坏数据库的用户,包括那些超越权限来访问数据库的用户.一般说来,非法用户对数据库的危害是相当严重的。
(2)非法数据非法数据是指那些不符合规定或语义要求的数据,一般由用户的误操作引起。
(3)各种故障各种故障指的是各种硬件故障(如磁盘介质)、系统软件与应用软件的错误、用户的失误等。
(4)多用户的并发访问数据库是共享资源,允许多个用户并发访问(Concurrent Access),由此会出现多个用户同时存取同一个数据的情况。
如果对这种并发访问不加控制,各个用户就可能存取到不正确的数据,从而破坏数据库的一致性.针对以上4种对数据库破坏的可能情况,数据库管理系统(DBMS)核心已采取相应措施对数据库实施保护,具体如下:(1)利用权限机制,只允许有合法权限的用户存取所允许的数据,这就是本章4.1节“数据库安全性”应解决的问题。
(2)利用完整性约束,防止非法数据进入数据库,这是本章4。
2节“数据库完整性"应解决的问题。
(3)提供故障恢复(Recovery)能力,以保证各种故障发生后,能将数据库中的数据从错误状态恢复到一致状态,此即本章4。
3节“故障恢复技术”的内容.(4)提供并发控制(Concurrent Control)机制,控制多个用户对同一数据的并发操作,以保证多个用户并发访问的顺利进行,此即本章4.4节“并发控制”的内容。
4.1 数据库安全性4.1.1 数据库安全性问题的概述1.数据库安全问题的产生数据库的安全性是指在信息系统的不同层次保护数据库,防止未授权的数据访问,避免数据的泄漏、不合法的修改或对数据的破坏。
数据库简答题

1.什么是数据的安全性?答:数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏2.什么是数据库的完整性?答:数据库的完整性是指数据的正确性和相容性。
3.数据库的安全性和完整性有什么关系?答:数据的完整性和安全性是两个不同的概念,但是有一定的联系。
前者是为了防止数据库中存在不符合语义的数据,防止错误信息的输入和输出,即所谓垃圾进垃圾出所造成的无效操作和错误结果。
后者是保护数据库防止恶意的破坏和非法的存取。
也就是说,安全性措施的防范对象是非法用户和非法操作,完整性措施的防范对象是不合语义的数据。
4.试述实现数据库安全性控制的常用方法和技术。
答:实现数据库安全性控制的常用方法和技术有:(1)用户标识和鉴别:该方法由系统提供一定的方式让用户标识自己的名字或身份。
每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权。
(2)存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据。
例如C2 级中的自主存取控制(DAC),B1级中的强制存取控制(MAC)。
(3)视图机制:为不同的用户定义视图,通过视图机制把要保密的数据对无权存取的用户隐藏起来,从而自动地对数据提供一定程度的安全保护。
(4)审计:建立审计日志,把用户对数据库的所有操作自动记录下来放入审计日志中,DBA可以利用审计跟踪的信息,重现导致数据库现有状况的一系列事件, 找出非法存取数据的人、时间和内容等。
(5)数据加密:对存储和传输的数据进行加密处理,从而使得不知道解密算法的人无法获知数据的内容。
5.什么是数据库的审计功能,为什么要提供审计功能?答:审计功能是指DBMS 的审计模块在用户对数据库执行操作的同时把所有操作自动记录到系统的审计日志中。
因为任何系统的安全保护措施都不是完美无缺的,蓄意盗窃破坏数据的人总可能存在。
利用数据库的审计功能,DBA 可以根据审计跟踪的信息,重现导致数据库现有状况的一系列事件,找出非法存取数据的人、时间和内容等。
第十一章 数据库的安全和完整性约束

的权限授给用户U1: 例1:把查询表 :把查询表Student的权限授给用户 : 的权限授给用户 GRANT SELETE ON TABLE Student TO U1; 2:把对表Student Course全部操作权限 例2:把对表Student 和Course全部操作权限 授予用户U2和 : 授予用户 和U3: GRANT ALL PRIVILIGES ON TABLE Student,Course , TO U2,U3; ,
更新操作授权例子: * 更新操作授权例子: SELECT,UPDATE(GRADE,ADDRESS) GRANT SELECT,UPDATE(GRADE,ADDRESS) XU, ON TABLES XU,MA 对用户XU MA授权于访问 更新操作。 XU, 授权于访问、 意: 对用户XU,MA授权于访问、更新操作。 在数据目录中,有一张授权表, 在数据目录中,有一张授权表,记录了每个数据 库的授权情况,内容有: 库的授权情况,内容有:
例如:建立新用户CHANG,用命令 例如:建立新用户CHANG,用命令 CHANG, GRANT CONNECT TO CHANG IDENTIFIED BY xyzabc 如果给CHANG再授权DBA特权,则用以下语句: 如果给CHANG再授权DBA特权,则用以下语句: CHANG再授权DBA特权 GRANT DBA TO CHANG 因前已注册,这里可不必再附口令了。 注:因前已注册,这里可不必再附口令了。
并发所引起的不一致对付这两种破坏用数对付这两种破坏用数恢复技术恢复技术人为的破坏属于数据库安全问题属于数据库安全问题输入或更新数据库的数据有误更新事务未遵守保持数据库一致性的原则
第八章 数据库的安全和完整性约束
数据库是共享资源,即要充分利用它, 数据库是共享资源,即要充分利用它,又要 保护它。数据库的破坏一般来自四个方面: 保护它。数据库的破坏一般来自四个方面 1. 系统故障 2. 并发所引起的 不一致 对付这两种破坏,用数 对付这两种破坏, 据 恢复技术
实验五 数据库完整性与安全性实验

实验五数据库完整性与安全性实验1、实验目的1.通过对完整性规则的定义实现,熟悉了解kingbase中完整性保证的规则和实现方法,加深对数据完整性的理解。
2.通过对安全性相关内容的定义,熟悉了解kingbase中安全性的内容和实现方法,加深对数据库安全性的理解2、实验环境操作系统:Microsoft Windows 7旗舰版(32位)。
数据库版本:MySQL 6.23、实验内容3.1完整性实验:(1)分别定义学生数据库中各基表的主键、外键,实现实体完整性约束和参照完整性约束;在create table 时已经定义了各个基表的主键。
因此,首先对每个基表删除主键,再添加主键。
实现实体完整性约束。
如下图。
删除主键:添加主键:sc表中的cno和sno分别是course表和student表的外关键字。
下图为给sc表添加student和course的外键,实现参照完整性约束。
alter table sc add constraint fk_student foreign key(sno) references student(sno);alter table sc add constraint fk_course foreign key(cno) references course(cno);主键和外键均添加成功,输入show create table 命令来查看各基表信息。
(2)分别向学生表、课程表插入具有相同学号和相同课程编号的学生数据和课程数据,验证其实体完整性约束;向课程表中插入课程号为C01的课程。
向学生表中插入学号为30201的学生。
由上面两个实验来看,分别对student和course表插入具有相同学号和相同课程号的学生信息和课程信息,都显示sql语句错误信息为:Duplicate entry *** for key ‘PRIMARY’。
验证了实体完整性约束。
(3)向学生选课表中插入一条数据,课程编号是课程表中没有的,验证参照完整性约束;插入成绩信息是学号为31428(student中存在),课程号为C07(course中不存在)的学生成绩信息。
数据库安全性和完整性

完整性措施可以确保数据的准确性和一致性,防止数据被错误地修改或损坏。
安全性措施和完整性措施相互补充,共同维护数据库的整体可靠性。
01
02
03
04
数据库安全性和完整性之间的联系
数据库安全性和完整性之间的区别
01
安全性主要关注数据的保密性,即防止未授权访问和泄露。
数据完整性包括实体完整性、域完整性和参照完整性等不同类型,分别对应不同的约束条件和规则。
数据库完整性的定义
提高数据可靠性
通过维护数据库完整性,可以减少数据不一致和冲突的情况,提高数据的可靠性和可信度。
保障业务正常运行
数据库中存储着大量关键业务数据,数据库完整性的保持对于保障业务的正常运行至关重要。
数据修复
一旦发现数据完整性问题,及时进行修复。根据问题的性质,可能需要回滚事务、更新数据或删除无效数据等操作。
检查完整性约束
定期检查数据库表中的约束条件是否得到满足,如主键约束、外键约束等。
数据库完整性的检查和修复
03
数据库安全性和完整性之间的关系
数据库安全性和完整性是相互关联的,它们共同确保数据库中数据的可靠性和保密性。
数据资产保护
保障数据库的安全性和完整性是确保业务连续性的关键,一旦数据库遭到破坏或泄露,可能导致业务中断或遭受重大损失。
业务连续性
访问控制
数据加密
备份与恢复
安全审计
如何保障数据库的安全性和完整性
对敏感数据进行加密存储,即使数据被非法获取也无法轻易解密。
定期进行数据库备份,并制定详细的备份和恢复计划,以便在数据出现问题时能够及时恢复。
解释数据库安全性的基本原则如机密性完整性和可用性

解释数据库安全性的基本原则如机密性完整性和可用性数据库安全性是现代信息系统中至关重要的一个方面。
它涉及到确保数据库中存储的数据得到保护,防止未经授权的访问、修改或破坏。
为了实现数据库的安全性,有一些基本原则需要遵循,包括机密性、完整性和可用性。
1. 机密性机密性是指确保数据库中的数据只能被授权的人员或实体访问。
为了保障机密性,可以采取以下措施:- 访问控制:通过使用用户名和密码、访问权限控制列表等方法,只允许授权的用户或角色访问数据库。
- 加密:采用加密技术对数据库中的敏感数据进行加密,使得即使数据被非法获取,也无法得到其中的实际内容。
- 审计和监控:实时监控数据库的访问情况,及时发现异常行为,以保护数据的机密性。
2. 完整性完整性是指确保数据库中的数据的准确性和一致性。
为了保护数据库的完整性,可以采取以下措施:- 数据校验:对输入的数据进行验证,包括数据类型、长度、格式等方面的检查,防止错误的数据被插入数据库。
- 关系约束:使用关系型数据库管理系统提供的约束机制,定义实体之间的关系和约束条件,确保数据的一致性和完整性。
- 备份和恢复:定期对数据库进行备份,以应对意外情况,如数据损坏、误删除等,保障数据的完整性。
3. 可用性可用性是指数据库能够在需要时可靠地提供服务。
为了保证数据库的可用性,可以采取以下措施:- 容灾备份:设置数据库的容灾备份策略,包括故障转移、冗余备份等,以确保在硬件故障或灾难发生时,数据能够持续可用。
- 性能优化:对数据库进行性能调优,包括合理的索引设计、查询优化等,以提升数据库的访问速度和响应能力。
- 故障监测和恢复:实施自动化的故障监测和快速恢复机制,及时检测和处理数据库故障,减少停机时间。
综上所述,数据库安全性的基本原则涵盖了机密性、完整性和可用性。
通过严格控制访问权限、加密敏感数据、校验数据完整性、备份和恢复等措施,可以有效保护数据库中的数据并确保其安全性。
只有在遵循这些基本原则的前提下,才能够建立一个安全可靠的数据库系统。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据库的安全性和完整性•数据库安全性的概念•数据库安全性的措施•数据库完整性的概念•数据库完整性的措施•各种约束条件•断言•触发器•什么是数据库的安全性?保护数据库以防止不合法的使用所造成的数据泄露、更改或破坏。
计算机以及信息安全标准两个重要标准:•TCSEC: 1985年美国国防部颁布的可信计算机系统评估准则.分为四个组,七个等级(D,C1,C2,B1,B2,B3,A1)•CC: 国际通用标准,安全功能要求(11类)和安全保证要求(7个类)用户DBMS OS DB用户标识和验证存取控制操作系统安全保护数据加密•用户身份鉴别:通过帐号和密码来控制。
•DBMS:定义用户权限,合法权限的检查。
实现方法有自主存取控制和强制存取控制两种。
•视图机制•审计:把用户对数据库的所有操作自动记录下来。
•自主存取控制方法GRANT, REVOKE语句•强制存取控制方法(用户不能直接感知)主体:系统中的活动主体,代表实际的用户。
客体:系统中的被动实体.例如表,视图等。
敏感度标记:(主体:许可证级别)(客体:绝密,机密,可信,公开)通过对比主体和客体的敏感度标签决定主体是否可以存取客体.•定义用户权限Grant SELECT on student to ‘张三’;存放在数据字典里。
•合法权限检查用户发出的操作都要进行权限检查。
如超出定义的权限,系统拒绝执行。
用户授权——用户/组•用户•数据库的使用者•组•具有相同用户权限的用户的集合•便于管理•特性•具有特定的角色•用户名/口令•权限(表/视图、操作)用户授权——用户/组•创建用户组•将用户加入用户组Public:是所有用户的总称。
由DBA在创建用户时实现•CREATE USER <username>{WITH][DBA I RESOURCE I CONNECT];三种权限:•DBA: 超级用户,创建用户,数据库,基本表等•RESOURCE: 可以创建基本表和视图,进行操作,不能创建user,schema。
•CONNECT: 可以登录数据库,执行数据查询和操作(默认),不能创建。
用户权限•DBA具有数据库中的所有权限•基本表的Owner具有对该表的一切操作权限•用户可被授予权限,也可能具有传播该权限的能力(如果指定了With Grant Option )Grant <权限>[,<权限>]…[On <对象类型><对象名>]To <用户>[,<用户>]…[With Grant Option];具有授权的权限用户授权•用户的创建(各DBMS产品会有所不同)GRANT CONNECT TO userid , ...IDENTIFIED BY password, …•例:GRANT CONNECT TO WANGIDENTIFIED BY WANG用户授权•给特定的用户/用户组授予相应的权限•例:向用户WANG授予表student的查询权限Grant Select On Table student To WANG;对象与权限•数据库角色是被命名的一组与数据库操作相关的权限,角色是权限的集合.使用角色管理数据库权限可以简化授权的过程. •CREATE ROLE <角色名>•GRANT<权限>[, <权限>] ON <对象类型>对象名 TO <角色>[, <角色>]•CREATE ROLE 教务员•GRANT SELECT,UPDATE,INSERT ON TABLE STUDENT TO 教务员•GRANT 教务员 TO 王品,张明,赵玲用户授权•例:向用户 A 授予student表的查询以及对其中sdept属性的修改权限,并允许其传播该权限Grant select , update(sdept)on Table studentto Awith grant option用户授权•例:向用户A以及用户B授予student表上的所有权限Grant All privilegeson Table studentto A,B权限回收•Revoke•回收由Grant授予的权限Revoke <权限>[,<权限>]…[On <对象类型><对象名>]From <用户>[,<用户>]…[CASCADE I RESTRICT];权限回收•级联回收-某用户(具有权限传播能力)的权限被回收后,由其授权的用户权限也被自动回收。
•受限制回收–如果该用户已把权限授予其它用户,则该回收被拒绝。
•Revoke <权限> >【,<权限>】 ON <对象类型> FROM <角色>【,<角色>】…•Revoke 教务员 from 王品;用户权限回收•回收用户A在student表的sdept属性上的修改权限Revoke Update(sdept)On Table studentFrom A;AP**A owns the object on which P is a privilegeBP*A: GRANT PTO B WITHGRANT OPTIONCP*B: GRANT PTO C WITHGRANT OPTIONCPA: GRANT PTO CAP** BP* CP* CPA 执行 REVOKE P FROMB CASCADE;用户B 和C 都没有了P 与授予的权限。
但C 还有来自A 授予的 P 权限。
Even had C passed P to B, both nodes are still cut off.如果 A 执行下面的语句: REVOKE P FROM B RESTRICT ??er A(owner): grant p to B, E with grant optioner B: grant p to C with grant optioner C: grant p to D with grant optioner E: grant p to Cer E: grant p to D with grant optioner A: revoke grant option for p from B cascade•视图机制•审计 (用于安全性较高的部门)把用户对数据库的操作自动记录放在审计日志中.•数据加密根据一定的算法将原始数据变换为不可直接识别的格式.•数据库的完整性指数据的正确性和相容性。
•为防止数据库中存在不符合语义的数据,防止错误信息的输入和输出而制定的语义约束条件称为完整性约束条件。
•检查数据是否满足完整性约束条件称为完整性检查。
•完整性约束的对象可以是整个数据库、关系、元组和属性。
•静态约束:数据库在每一确定状态时,数据对象应满足的约束条件。
•动态约束:数据库从一种状态转变为另一种状态时应满足的条件。
•实体完整性: 实体的码唯一,且不能为空。
•参照完整性:外码•用户自己定义的完整性1.Check 子句(属性级别,表级别)2.断言3.触发器CREATE TABEL Student (SNO int PRIMARY KEY,sname char(6) NOT NULL,age int CHECK (age >=16 AND age < 50), dept char(6) REFERENCES Department (dept) ON UPDATE CASCADE ON DELETE SET NULL );级连修改删除设置为空属性上的约束:•列非空 : NOT NULL•列值唯一: UNIQUE•检查列值是否满足一个布尔表达式: CHECK元组上的约束(表约束):检查元组是否满足一个布尔表达式: CHECK基于属性的约束表达式•形式: CHECK (condition)1)条件中包含该属性.2)条件中可以包含其他属性,但只能在子查询中•何时检查呢?当该属性发生变化时,系统检查该约束条件。
即,插入和修改操作时,检查该约束是否满足。
ExampleCREATE TABLE SC (SNO CHAR (20) CHECK ( SNO IN SELECT SNO FROM STUDENT),CNO CHAR(20) CHECK ( CNO IN SELECT cno FROM course),GRADE REAL CHECK ( grade >=0 and grade <=100) PRIMARY KEY (SNO,CNO));基于元组的约束表达式•约束条件是基于多个属性•建表时说明为单独的约束条件,形式: 如 attribute-based check.•何时检查:当数据发生变化,即插入,更新操作时。
ExampleCREATE TABLE Student (sno CHAR (20) primary key,sname CHAR (20) not null,ssex CHAR(1),sage (int),sdept CHAR(20),CHECK (ssex= ‘女’OR sname NOT LIKE ‘Ms.%’ ) ); 定义了元组中姓名和性别之间的约束条件,避免错误的发生。
SQL Assertions 断言•Database-schema 层次上的约束•有些数据库不支持.•断言中包含的数据库表发生变化,该断言被检查•Syntax:CREATE ASSERTION <name> CHECK (< condition>);CREATE ASSERTION credit_checkCHECK(30 <= ALL (SELECT SUM(credit)FROM SC,CWHERE o=oGROUP BY sno ))SC和C表的任何变化,系统都会自动检查该断言,是否满足条件。
约束类型说明的地方激活的条件是否保证该约束条件?Attribute-based Check WithattributeOn insertion torelation orattributeupdateNot ifsubqueriesTuple-based Check Element ofrelationschemaOn insertion torelation ortuple updateNot ifsubqueriesAssertion Element ofdatabaseschema On change toany mentioned relationYes命名约束命名约束例如:1)ssex Char(1) CONSTRAINT NoAndro CHECK (ssex in (‘F’,’M’)),2)Name Char(30) CONSTRAINT NameIsKey PRIMARY KEY,修改约束例如:1)ALTER TABLE Student DROP CONSTRAINT NoAndro;2)ALTER TABLE Student ADD CONSTRAINT NameIskeyPRIMARY KEY(name);触发器(Triggers)基于 event-condition-action 规则•Event= 指插入,删除和更新•Condition= 指WHERE语句中的条件•Action= 一系列的 SQL 语句Triggers•不同于 checks, assertions and triggers.•由事件自动触发具有更精细更强大的数据控制能力.很多DBMS都实现了触发器,但语法梢有不同.Triggers 标准语法General form:CREATE TRIGGER <name>BEFORE | AFTER | INSTEAD OF <events> FOR EACH ROW | STATEMENT //optional<referencing clause> // optional WHEN (<condition>) // optional <action>触发器语法<events>: INSERT ON RDELETE ON RUPDATE [OF A1, A2, ..., An] ON R<condition>: like general assertion<action>: sequence of SQL statementsFOR EACH ROW: execute once for each tuple changed, if omitted, execute once for each relevant statement ("row-level" versus "statement-level") in either case, execute after statement completes触发器语法(续)REFERENCING <thing> AS <var><thing> can be:OLD-TABLE - previous values of deleted or updated tuples for row-level or statement-level DELETE or UPDATENEW_TABLE - current values of inserted or updated tuples for row-level or statement-level INSERT or UPDATEOLD - previous value of deleted or updated tuple row-level only DELETE or UPDATENEW - current value of inserted or updated tuple row-level only INSERT or UPDATE触发器实例Teacher (teacherID, name, age, salary)CREATE TRIGGER updateSalAFTER UPDATE ON TeacherFOR EACH ROWREFERENCING OLD AS OldTuple,NEW AS NewTuple WHEN (OldTuple.salary>NewTuple.salary) UPDATE TEACHERSET salary = OldTuple.salaryWHERE teacherID = NewTuple.teacherID 语句执行顺序: 1)触发事件update teacher 2)触发器updateSal 触发3)判断条件WHEN语句4)满足执行action5)不满足,退出.6)…action触发器的应用CREATE TRIGGER 库存控制AFTER UPDATE OF 库存量 ON 库存REFERENCING NEW AS NFOR EACH ROWWHEN (N.库存量<N.库存下限AND NOT EXISTS(SELECT * FROM 在购定单 WHERE 零件号=N.零件号))INSERT INTO 在购定单 V ALUES(N.零件号,N.订购量,SYSDATE);•DROP TRIGGER updateSal ON TEACHER。