注册
DM触发器
培训园地/ 文章详情 /

DM触发器

llb 2025/04/24 123 0 0

一、触发器概念
触发器(TRIGGER):当某些与数据库有关的事件发生时,数据库应该采取的操作。通过触发器机制,用户可以定义、删除和修改触发器。DM 自动管理和运行这些触发器,从而体现系统的主动性,方便用户使用。触发器是一种特殊的存储过程,它在创建后就存储在数据库中。触发器的特殊性在于它是建立在某个具体的表或视图之上的,或者是建立在各种事件前后的,而且是自动激发执行的,如果用户在这个表上执行了某个 DML 操作(INSERT、DELETE、UPDATE),触发器就被激发执行。触发器是应用程序分割技术的一个基本组成部分,它将事务规则从应用程序的代码中移到数据库中,从而可确保加强这些事务规则并提高它们的性能。
image.png
image.png
二、各类触发器
跨模式创建触发器:可授予对应用户 create any trigger权限,需要打开ENABLE_DDL_ANY_PRIV=1参数;默认情况下,该参数是关闭的;ENABLE_DDL_ANY_PRIV:默认为0,动态,系统级 ;是否可以授予和回收DDL相关的ANY系统权限。0:否;1:是
查询语句select * from v$dm_ini where para_name like ‘%DDL%’;达梦触发器系统表存于SYS.DBA_TRIGGERS和SYS.USER_TRIGGERS
image.png
image.png
以下触发器为语句级触发器;触发时机为在执行触发语句之后激发;
触发条件:更新表TEST.STUDENT中ID,XM两列的值之后,会触发触发器体执行。
image.png
以下触发器为元组级触发器;触发时机为在执行触发语句之前激发;
触发条件:删除PERSON.PERSON表中的数据,会触发触发器体执行。
image.png
image.png
通过查找ID值update更新其他值
update TEST.STUDENT set XM='SJ' where ID='16';
触发器激发顺序:
1.如果有语句级前触发器的话,先运行该触发器;
2.对于受语句影响每一行:

  1. 如果有行级前触发器的话,运行该触发器;
  2. 执行该语句本身;
  3. 如果有行级后触发器的话,运行该触发器。
    3.如果有语句级后触发器的话,运行该触发器。
    image.png
    image.png
    image.png
    三、时间触发器
    时间触发器的特点是用户可以定义在任何时间点、时间区域、每隔多长时间等的方式来激发触发器
    在屏幕上每隔一分钟输出一行“HELLO WORLD”。
    CREATE OR REPLACE TRIGGER timer2
    AFTER TIMER on database
    for each 1 day for each 1 minute
    BEGIN
    print 'HELLO WORLD';
    END;
    /
评论
后发表回复

作者

文章

阅读量

获赞

扫一扫
联系客服