Chinaunix首页 | 论坛 | 博客
  • 博客访问: 58980
  • 博文数量: 13
  • 博客积分: 1450
  • 博客等级: 上尉
  • 技术积分: 161
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-30 11:06
文章分类

全部博文(13)

文章存档

2013年(1)

2011年(6)

2010年(2)

2008年(4)

我的朋友

分类: Oracle

2008-06-30 11:53:39

PL/SQL----触发器
2008年04月03日 星期四 15:40
触发器

--------------------------------------------------------------------------------
创建触发器:
    CREATE [OR REPLACE] TRIGGER <触发器名>
    BEFORE|AFTER
    INSERT|DELETE|UPDATE [OF <列名>] ON <表名>
    [FOR EACH ROW]
     WHEN (<条件>)
    

     关键字"BEFORE"在操作完成前触发;"AFTER"则是在操作完成后触发;
     关键字"FOR EACH ROW"指定触发器每行触发一次.
     关键字"OF <列名>" 不写表示对整个表的所有列.
     WHEN (<条件>)表达式的值必须为"TRUE".

特殊变量:
     :new --为一个引用最新的列值;
     :old --为一个引用以前的列值;
这些变量只有在使用了关键字 "FOR EACH ROW"时才存在.且update语句两个都有,而insert只有:new ,delect 只有:old;

使用RAISE_APPLICATION_ERROR
     语法:RAISE_APPLICATION_ERROR(错误号(-20000到-20999),消息[,{true|false}]);
     抛出用户自定义错误.
     如果参数为'TRUE',则错误放在先前的堆栈上.

INSTEAD OF 触发器
     INSTEAD OF 触发器主要针对视图(VIEW)将触发的dml语句替换成为触发器中的执行语句,而不执行dml语句.


禁用某个触发器
     ALTER TRIGGER <触发器名> DISABLE
重新启用触发器
     ALTER TRIGGER <触发器名> ENABLE
禁用所有触发器
     ALTER TRIGGER <触发器名> DISABLE ALL TRIGGERS
启用所有触发器
     ALTER TRIGGER <触发器名> ENABLE ALL TRIGGERS
删除触发器
     DROP TRIGGER <触发器名>
 
 
阅读(903) | 评论(0) | 转发(0) |
0

上一篇:Oracle的体系

下一篇: Oracle技巧和脚本

给主人留下些什么吧!~~