数据库数据库完整性触发器
- 格式:ppt
- 大小:862.00 KB
- 文档页数:92


触发器的作⽤
触发器
触发器(trigger)是个特殊的存储过程,它的执⾏不是由程序调⽤,也不是⼿⼯启动,⽽是由个事件来触发,⽐如当对⼀个表进⾏操作(insert,delete, update)时就会激活它执⾏。触发器经常⽤于加强数据的完整性约束和业务规则等。 触发器可以从 DBA_TRIGGERS
,USER_TRIGGERS 数据字典中查到。
触发器可以查询其他表,⽽且可以包含复杂的 SQL 语句。它们主要⽤于强制服从复杂的业务规则或要求。例如,您可以根据客户当前的帐
户状态,控制是否允许插⼊新订单。
触发器也可⽤于强制引⽤完整性,以便在多个表中添加、更新或删除⾏时,保留在这些表之间所定义的关系。然⽽,强制引⽤完整性的最好
⽅法是在相关表中定义主键和外键约束。如果使⽤数据库关系图,则可以在表之间创建关系以⾃动创建外键约束。
⼀ 触发器介绍
触发器是⼀种特殊的存储过程,它在插⼊,删除或修改特定表中的数据时触发执⾏,它⽐数据库本⾝标准的功能有更精细和更复杂的数据控
制能⼒。数据库触发器有以下的作⽤:* 安全性。可以基于数据库的值使⽤户具有操作数据库的某种权利。
# 可以基于时间限制⽤户的操作,例如不允许下班后和节假⽇修改数据库数据。
# 可以基于数据库中的数据限制⽤户的操作,例如不允许股票的价格的升幅⼀次超过10%。
* 审计。可以跟踪⽤户对数据库的操作。
# 审计⽤户操作数据库的语句。
# 把⽤户对数据库的更新写⼊审计表。
* 实现复杂的数据完整性规则。 # 实现⾮标准的数据完整性检查和约束。触发器可产⽣⽐规则更为复杂的限制。与规则不同,触发器可以引
⽤列或数据库对象。例如,触发器可回退任何企图吃进超过⾃⼰保证⾦的期货。# 提供可变的缺省值。
* 实现复杂的⾮标准的数据库相关完整性规则。触发器可以对数据库中相关的表进⾏连环更新。例如,在auths表author_code列上的删除触
发器可导致相应删除在其它表中的与之匹配的⾏。# 在修改或删除时级联修改或删除其它表中的与之匹配的⾏。
名词解释数据库的完整性
数据库的完整性是指数据库中的数据符合事先定义的规则和约束,没有数据的不一致性和错误。它通常包括实体完整性、域完整性、参照完整性和用户自定义完整性等方面。
一、实体完整性
实体完整性是指数据库表中的每一行数据都必须能被识别并与其他表中的数据进行关联。在关系型数据库中,每个表都必须有一个主键,用于唯一标识其中的每一条记录。通过定义主键,可以确保每个记录都具有唯一性,避免了数据的重复和混乱。
二、域完整性
域完整性是指数据库中每个属性的取值都必须满足其定义的约束条件。例如,字段的数据类型、长度、格式等都需要满足设定的规则,以保证数据的有效性和一致性。常见的约束条件包括非空约束、唯一约束、范围约束、正则表达式约束等。
三、参照完整性
参照完整性是指数据库中的外键约束能够维护表与表之间的关系,保证数据的一致性和完整性。外键是指一个表的字段引用另一个表中的主键,用于建立两个表之间的联系。外键约束可以限制只能插入或更新具有对应主键值的数据,避免了数据的破坏和不一致。
四、用户自定义完整性
用户自定义完整性是指用户根据具体业务需求对数据库增加的约束条件,以满足特定的数据要求。这些约束条件通常是通过触发器、存储过程等方式定义的,可以对数据进行进一步的验证和筛选,确保数据的正确性和有效性。用户自定义完整性适用于特定的业务场景,能够帮助用户更好地管理和控制数据。 总结起来,数据库的完整性对于数据的有效性和一致性非常重要。它通过实体完整性、域完整性、参照完整性和用户自定义完整性等方面的规则和约束,确保了数据库中的数据正确、满足要求,并能够与其他数据表之间建立正确的关联。只有保持数据库的完整性,才能为用户提供可信赖的数据支持,帮助他们做出准确的决策和分析。
2006年3月 第7卷第l期总第25期 太原大学学报
JoumaI Of Taiyuan University Vot.7No.1 SumNo.25
文章编号:1671—5977(2006)01—0064—02
数据库中的触发器技术
徐国华 白凤娥2
(1.太原大学计算中心,山西太原030009;2.太原理工大学,山西太原030024)
摘要:在数据库管理系统中,保证数据的完整性至关重要。数据类型、各种约束条件只能解决一些比较简 单的数据完整性问题,而触发器技术作为一种高级技术,可以强制执行复杂的业务规则,对数据库开发过程中 遇到的问题,往往会有独到的解决方法。触发器能使数据库的设计变得简洁和高效。 关键词:触发器;数据完整性 中图分类号:TP311 文献标识码:A
在数据库设计中,会经常用到触发器。它存
在于后台数据库服务器中,并会在相应条件下自
动地隐式执行,从而使得它的设计既与前台
(client,客户机方)的平台无关,又免除了前台相
关的数据操作设计。本文将讨论在SQL SERV—
ER环境下使用触发器的相关技术。
一、什么是触发器
触发器是一组预先定义并编译好的SQL语
句,存储在服务器上,一般用来实现某种特定的
功能。触发器与表的关系密切,能够保护表中数
据。当有操作影响到触发器所保护的数据时,触
发器自动执行。
触发器是依附于表的,因此只能在表上创建
触发器。一个表上可以创建三种类型的触发器: INSERT触发器,DELETE触发器,UPDATE触
发器。当对某个表进行插入、删除或更新操作
时,如果该表上有相应类型的触发器,则触发器
会自动被触发执行。
下面的例子为student表创建一个DELETE
触发器:
CREATE TRIGGER stu—del ON student
F0R DELETE
AS
BEGIN
PRINT‘You cannot delete any record!’
简单使用触发器SQL触发器的使用及语法
SQL触发器是一种特殊类型的存储过程,它是在数据库中一些特定的操作发生时自动执行的。触发器可以用于在数据被插入、更新或删除时执行一系列的操作。本文将详细介绍SQL触发器的使用和语法。
1.触发器的类型:
SQL触发器可以分为三种类型:插入触发器(INSERT trigger)、更新触发器(UPDATE trigger)和删除触发器(DELETE trigger)。根据业务需求选择相应的触发器类型。
2.创建触发器:
创建触发器需要使用CREATETRIGGER语句。语法如下:
CREATE TRIGGER
{BEFORE,AFTER,INSTEADOF}{INSERT,UPDATE,DELETE}
[ON ]
[FOREACHROW]
[WHEN ()]
BEGIN
--触发器执行的操作
END;
其中,trigger_name是触发器的名称;BEFORE / AFTER / INSTEAD
OF表示触发器在所指定操作之前、之后或者代替进行;INSERT / UPDATE / DELETE表示触发器响应的操作类型;table_name是触发器所绑定的表名;FOR EACH ROW表示该触发器对每一行数据都执行;condition是触发器的条件。
3.触发器执行的操作:
在触发器的BEGIN和END之间,可以进行一系列的操作,如执行SQL语句、调用存储过程等。可以根据业务需求在触发器中编写逻辑代码来满足需求。
4.触发器的应用场景:
-数据完整性:可以使用触发器在插入、更新或删除数据时进行一些验证,确保数据的完整性。例如,在插入新用户之前,可以在触发器中检查用户的必填字段是否为空。
-数据同步:可以使用触发器在数据更新时自动更新其他相关表中的数据,确保数据的同步。例如,在更新订单信息时,可以在触发器中更新库存表中的相应数据。
-数据审计:可以使用触发器在数据插入、更新或删除时自动记录相关操作日志,用于审计或追踪。例如,在删除客户信息时,可以在触发器中记录删除操作的时间和用户信息。