[Oracle]TRIGGER

题外话:

Oracle 的使用。
以前客户方用的是SQL SERVER,一直在用SQL SERVER,感觉SQL SERVER的用户体验非常好。
不管是开发环境的界面布局到SQL 的写法上,感觉写起来颇为流畅。
 
后来开始用PL/SQL之后,觉得有时候会很别扭,感觉用户界面体验差一些,SQL写起来也是很别扭。
每句话基本上都要有一个分号,而且,select 有时候还需要from dual;可能为了要求严谨吧,这样势必会让人觉得相对MSS要强大一些。
 
再后来,再客户要求写一个功能的时候,用到了触发器,然后慢慢也觉得 也挺有意思的。
所有对象都会罗列到左侧上方的区域里面。然后左下方是打开的窗口列表,相如在MSS里面,打开窗体的列表会以TAB页面的形式显示在上方。
右侧是编辑区域,分为上下两部分,上方是编辑区域,下方是执行结果区域。
右上方又分为了左右两个部分。比较亮的一点就是会把程序的结构以树形的方式展现出来。这样就算再长的代码也能较快的定位到。
相如MSS好像就没有这种树形结构的设计,但MSS提供的是代码收缩。
唯一比较遗憾的是,好像注释的代码显示不在左侧,所以不能很清楚的知道每个代码块的实际作用。反而MSS的代码收缩,可以直接收缩到注释,
这样一来就能很清晰的知道,这块代码到底是干什么的。
算是,各有千秋吧。
 
 
 
 
下面转入触发器,触发器CSDN,CNBLOG上,很多人都写的太详细,太完美了,那么长,实际使用的时候,再去面对自己的情况,真的是很麻烦。
 
 1 CREATE OR REPLACE TRIGGER tr_Update_MSG_YX
 2    AFTER INSERT 
 3    ON MSG_YX
 4    FOR EACH ROW
 5 declare
 6    str varchar( 2500 );
 7 BEGIN
 8  
 9    SMS_Insert(:new.ID,: new.MSGTITLE);
10    exception when others then 
11    str:=sqlerrm( sqlcode);
12    str:='ID:' ||:New.ID||',保存失败,' ||str;
13    Insert into MSG_YX_STATUS(ID, REsult)values(:New .ID,str);
14 END;

 

简单说来,就这么几句话。
 1 Create Or Replace TRIGGER 触发器的名字
 2      after Insert /*新增之后,这块实际使用的时候再谷歌一下,看看还可以选择啥,基本上delete update 都有*/
 3      on 要监视的表名称
 4      for each row --每一行的操作都会被监控到
 5 declare
 6      str varchar(2500);--声明变量
 7 Begin
 8      --写SQL,执行存储过程。
 9      --:New 里面放着那个你新增的数据行,可以直接 点 出列来。
10      --:old 里放着修改前的数据,Insert没有,update和delete 才有。
11      exception when others then
12      str:=sqlerrm(sqlcode);--就是说,如果执行语句报错了,就把错误信息赋值给str这个变量。
13      /*然后可以建立一张记录表,将错误信息记录下来,或者做其他的操作。剩下的基本上就是SQL操作了,跟触发器关系不大*/
14      /*还有监控列级别的,其他的那些,就可以直接再谷歌一下,看看根据实际需要改一改就行了,子事务啥的*/
15 End;

基本上就这样,深入的研究,还是需要个人慢慢来的。

 

转载于:https://www.cnblogs.com/Xuhaiyang/p/3144226.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值