我是靠谱客的博主 微笑小懒猪,最近开发中收集的这篇文章主要介绍数据库触发器使用详解,看完这个就够了!,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

--if OBJECT_ID('TR_orders_Insert','TR') IS NOT NULL
 --DROP TRIGGER TR_orders_Insert;
--GO

create or replace trigger UD_trigger   
before insert or update on emplyq1122   --触发事件   /  update of 列 on 表 说明当更改某一列的数据时候才会触发。  
referencing
    old as oldtuple  --给旧行和新行取新的名字,
    new as newtuple
for each row                  -- 每修改一行都需要调用此过程,
                 -- 对此我们称之为行级触发器,old,和new 才可以使用 insert触发操作 只有 :new 
                        -- delete触发操作 只有 :old;  update触发操作 都有。                        
declare     --定义变量
    --PRAGMA AUTONOMOUS_TRANSACTION;  -- 声明自治事务 
    my_err          exception; --用户自定义错误
    errno            integer;
    errmsg           char(200);
    minsalary       number(10,3);   
    maxsalary       number(10,3);
--    变量名 表名.字段名%type; //根据表的字段定义变量类型    
--WHEN (NEW.job_id = 'SA_REP')  也可以使用when来限制出发条件,当满足的时候才会开始执行下面的begin触发体
begin

–oracle 规定 不能在触发器中写commit,rollback。?????
试想一下,如果在触发器里面可以使用commit,你执行了某个批量更新操作
每一条都执行触发器的操作,即每一条都commit,
这样就无法再进行rollback到整个更新操作之前的状态。

–采用自治事务的方式,可以在trigger里rollback or commit;

–触发器执行规则 : 对于同一个表上的多个before触发器,遵循’谁先创建谁执行的原则’

–2.2 Msyql触发器的trigger_time和trigger_event
现在,重新注意到trigger_time和trigger_event,上文说过, trigger_time可以用before和after替换,表示触发器程序的执行在sql执行的前还是后
;trigger_event可以用 insert,update,delete替换,表示触发器程序在什么类型的sql下会被触发。
在一个表上最多建立6个触发器,即1)before insert型,2)before update型,3)before delete型,4)after insert型,5)after update型,6)after delete型。

触发器的一个限制是不能同时在一个表上建立2个相同类型的触发器。这个限制的一个来源是触发器程序体的“begin和end之间允许运行多个语句”
(摘自mysql使用手册)。
另外还有一点需要注意,msyql除了对insert,update,delete基本操作进行定义外,还定义了load data和replace语句,
而load data和replace语句也能引起上述6中类型的触发器的触发。
Load data语句用于将一个文件装入到一个数据表中,相当与一系列insert操作。replace语句一般来说和insert语句很像,
只是在表中有 primary key和unique索引时,如果插入的数据和原来primary key和unique索引一致时,会先删除原来的数据,
然后增加一条新数据;也就是说,一条replace sql有时候等价于一条insert sql,有时候等价于一条delete sql加上一条insert sql。即是:
? Insert型触发器:可能通过insert语句,load data语句,replace语句触发;
? Update型触发器:可能通过update语句触发;
? Delete型触发器:可能通过delete语句,replace语句触发;

最后

以上就是微笑小懒猪为你收集整理的数据库触发器使用详解,看完这个就够了!的全部内容,希望文章能够帮你解决数据库触发器使用详解,看完这个就够了!所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(48)

评论列表共有 0 条评论

立即
投稿
返回
顶部