当前位置:首页 » 参考文献 » 数据库触发器原理

数据库触发器原理

发布时间: 2021-02-28 18:03:37

数据库中触发器重要的功能是什么

数据审计是触发器的重要功能,其作用是跟踪数据的变化过程,审核操作的合法性与合理性,如果触发不合法的操作,可依据审计的记录把数据恢复到原来的状态。

数据审计业务一般由两个数据表构成,一个是业务表,普通用户可以拥有此表读写权限;

一个是审计表,普通用户不拥有此表读写权限,只有超级用户才拥有此表读写权限,用于记录数据的变化过程。下面以一个案例的方式来说明数据审计的过程和作用。

有一个存储车辆收费信息表t_car,表结构如图车辆收费信息表结构所示,因业务要求,程序要有对该表的数据修改权限,为此需要审计对该表上数据的记录值修改信息,以备查询、跟踪。

车辆收费信息表结构

有一个审计表t_record,表结构如图审计表结构所示,要记录对车辆收费信息表的修改行为的所有信息,以供事后进行审计,判断操作行为是否合法。

审计表存储的内容有修改前pay字段的值、修改后pay字段的值、记录被修改的时间、登录数据库服务器修改数据的ip地址、登录数据库服务器的账号信息。

审计表结构

((1)用audit.sql脚本初始化数据表环境,然后使用触发器记录所有用户对表t_car进行UPDATE操作修改数据的行为。触发器代码如下:DELIMITER//DROPTRIGGERIFEXISTStri_t_car;CREATETRIGGERtri_t_carBEFOREUPDATEONt_carFOREACHROWBEGINIFNEW.pay<>OLD.payTHENINSERTINTOt_record(username

⑵ 数据库中触发器的工作原理及性能问题,请教高人。

update触发器,主要是指当你对所设定表做update的时候,就回触发你触发器里写的程序,影响内的大小要看容你触发器里的内容了。
比如,你现在做了一个TAB1的update前触发器,CREATE or REPLACE TRIGGER trigger_name BEFORE UPDATE。
然后下面内容写的是,insert into TAB2 Select......., TAB2是个日志表记录谁什么时候修改了数据,那么对于TAB1来说基本不影响他的性能。

⑶ sql server 2005触发器的工作原理,何时触发

触发器就是一段语句。包括两个部分。一个部分是触发动作,一个部分是触发后执行的动作。
当你对相关的表格进行操作后,可能这个动作就触碰了触发器编写的语句,于是就执行后面的动作了。
举例:INSERT触发器
CREAT TRIGGER plus ON dbo.A 意思是在表A中创建名为plus的触发器
FOR INSERT动作是插入数据
AS
BEGIN TRANSACTION 执行检查
UPDATE dbo.B 执行动作的对象是更新B表
SET aa=bb+cc 把B表中的aa列的值更新为bb列和cc列的加和
WHERE cc IN (SELECT cc FROM INSERTED) 这里的inserted是指被插入的新数值
COMMIT TRANSACTION强制执行
GO
整个语句的意思就是:我在A表中创建一个名为plus的触发器,如果我对A表有插入数值的动作,就开始执行检查,并且更新B表中的aa列,使得该列的值等于A表中的bb+cc,其中的cc列被插入数值后,触发该动作,要求强制执行。

⑷ 数据库中触发器采用的什么样的原理

触发器具有强大的功能,每个触发器有插入和删除两个特殊的表,它有以下几个特点:((1)这两个表是逻辑表,并且是由系统管理的,存储在内存中,不是存储在数据库中,因此不允许用户直接对其修改。

(2)这两个表的结构总是与被该触发器作用的表有相同的表结构。

(3)这两个表动态驻留在内存中,当触发器工作完成时,这两个表也被删除。这两个表主要保存因用户操作而被影响到的原数据值或新数据值。

(4)这两个表是只读的,且只在触发器内部可读,即用户不能向这两个表写入内容,但可以在触发器中引用表中的数据。

对一个定义了插入类型触发器的表来讲,一旦对该表执行了插入操作,那么对该表插入的所有行来说,都有一个相应的副本级存放到插入表中,即插入表就是用来存储原表插入的新数据行。

对一个定义了删除类型触发器的表来讲,一旦对该表执行了删除操作,则将所有的被删除的行存放至删除表中。这样做的目的是,一旦触发器遇到了强迫它中止的语句被执行时,删除的那些行可以从删除表中得以还原。需要特别注意的是,更新操作包括两个部分动作:先将旧的内容删除,然后将新值插入。

因此,对一个定义了更新类型触发器的表来讲,当执行更新操作时,在删除表中存放修改之前的旧值,然后在插入表中存放修改之后的新值。

触发器对数据约束的原理是逐行检查。当在数据表上执行插入、删除和更新操作,触发器将会被触发执行时,每条SQL语句的操作哪怕只影响数据库中的一条记录,其也会检查此次操作对其他记录的影响,会对表中的所有记录按触发器上所定义的约束进行全方位的检查。

如果表中数据比较大,达到百万级的情况,触发器这个逐行检查原理会严重影响系统的性能,因此在使用触发器时需慎重评估其性能风险。

⑸ 数据库触发器有什么作用

触发器的作用:

自动计算数据值,如果数据的值达到了一定的要求,则进行特定的处理。

同步实时地复制表中的数据。

实现复杂的非标准的数据库相关完整性规则。

可在写入数据表前,强制检验或转换数据。

触发器发生错误时,异动的结果会被撤销。

部分数据库管理系统可以针对数据定义语言(DDL)使用触发器,称为DDL触发器。

可依照特定的情况,替换异动的指令 (INSTEAD OF)。


(5)数据库触发器原理扩展阅读:

分类

SQL Server 包括三种常规类型的触发器:DML 触发器、DDL 触发器和登录触发器。

DML触发器

当数据库中表中的数据发生变化时,包括insert,update,delete任意操作,如果我们对该表写了对应的DML触发器,那么该触发器自动执行。

DML触发器的主要作用在于强制执行业 务规则,以及扩展Sql Server约束,默认值等。因为我们知道约束只能约束同一个表中的数据,而触发器中则可以执行任意Sql命令。

DDL触发器

它是Sql Server2005新增的触发器,主要用于审核与规范对数据库中表,触发器,视图等结构上的操作。比如在修改表,修改列,新增表,新增列等。

它在数据库结构发生变化时执行,我们主要用它来记录数据库的修改过程,以及限制程序员对数据库的修改,比如不允许删除某些指定表等。

登录触发器

登录触发器将为响应 LOGIN 事件而激发存储过程。与 SQL Server 实例建立用户会话时将引发此事件。登录触发器将在登录的身份验证阶段完成之后且用户会话实际建立之前激发。

因此,来自触发器内部且通常将到达用户的所有消息(例如错误消息和来自 PRINT 语句的消息)会传送到 SQL Server 错误日志。如果身份验证失败,将不激发登录触发器。

参考资料来源:网络-触发器

⑹ 请问:数据库中的触发器是用来做什么的

触发器是一种特殊类型的存储过程,当使用下面的一种或多种数据修改操作在指定表中对数据进行修改时,触发器会生效:UPDATE、INSERT 或 DELETE。触发器可以查询其它表,而且可以包含复杂的 SQL 语句。它们主要用于强制复杂的业务规则或要求。例如,可以控制是否允许基于顾客的当前帐户状态插入定单。

触发器还有助于强制引用完整性,以便在添加、更新或删除表中的行时保留表之间已定义的关系。然而,强制引用完整性的最好方法是在相关表中定义主键和外键约束。如果使用数据库关系图,则可以在表之间创建关系以自动创建外键约束。有关详细信息,请参见表关系。

使用触发器的优点
触发器的优点如下:

触发器是自动的:它们在对表的数据作了任何修改(比如手工输入或者应用程序采取的操作)之后立即被激活。

触发器可以通过数据库中的相关表进行层叠更改。例如,可以在 titles 表的 title_id 列上写入一个删除触发器,以使其它表中的各匹配行采取删除操作。该触发器用 title_id 列作为唯一键,在 titleauthor、sales 及 roysched 表中对各匹配行进行定位。

触发器可以强制限制,这些限制比用 CHECK 约束所定义的更复杂。与 CHECK 约束不同的是,触发器可以引用其它表中的列。例如,触发器可以回滚试图对价格低于 10 美元的书(存储在 titles 表中)应用折扣

⑺ 数据库触发器的优缺点以及用法

触发器本质上讲就是事件监控器,可以定义在数据库系统进行某一个操作的前版后。
当数权据库系统在进行特定的操作时,发现有触发器定义,就去执行触发器定义的功能,从而满足某些特定的需要。
例如,在更新某些数据后,再去更新特定的数据。
这就可以定义一个触发器完成这样的需要。

触发器的优点:
以事件方式来处理. 当数据发生变化的时候, 自动作处理。
缺点:
当数据库之间 导出导入的时候, 可能会引起不必要的触发逻辑。

⑻ 触发器的工作原理

主要抄有两点:
1、触发器实际上是可以自动执行的存储过程,自动执行的依据是捕获能够改变数据的命令(又称DML),包括insert、delete和update;有的数据库服务器的捕获时机设置得更多,支持修改前和修改后捕获,而通常是修改后捕获。
2、数据库中执行单位是事务,触发器的具体操作将与引发它的语句处于同一事务,如此,在触发器中对事务执行rollback,效果上能起到禁止改变数据的作用。

⑼ 数据库中的触发器是什么,请帮忙解释一下

可以比照我们声控开关,当声音达到一定的程度,灯就会亮。数据库中的触发器就回是当你执行了某一个动作比答如insert,update,或delete某一个表,就会执行你定义好的sql语句。只是在数据库中,sql语句的执行也分before和after,而不像声控开关只是当声音到了之后才亮,触发器可以在你向某个表执行操作前执行。

热点内容
涂鸦论文 发布:2021-03-31 13:04:48 浏览:698
手机数据库应用 发布:2021-03-31 13:04:28 浏览:353
版面217 发布:2021-03-31 13:04:18 浏览:587
知网不查的资源 发布:2021-03-31 13:03:43 浏览:713
基金赎回参考 发布:2021-03-31 13:02:08 浏览:489
悬疑故事范文 发布:2021-03-31 13:02:07 浏览:87
做简单的自我介绍范文 发布:2021-03-31 13:01:48 浏览:537
战略地图参考 发布:2021-03-31 13:01:09 浏览:463
收支模板 发布:2021-03-31 13:00:43 浏览:17
电气学术会议 发布:2021-03-31 13:00:32 浏览:731