六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 86|回复: 0

Oracle 触发器笔记

[复制链接]

升级  12%

72

主题

72

主题

72

主题

举人

Rank: 3Rank: 3

积分
236
 楼主| 发表于 2012-12-10 14:53:02 | 显示全部楼层 |阅读模式
<div id="cnblogs_post_body">create or replace trigger emp
--before 表示对操作前的触发器
-- after 表示对操作后的触发器
--每张表最多可建立12个触发器
--before inset
--before insert for each row
--after insert
--after insert for each row
--before uPdate
--before uPdate for each row
--after uPdate
--after uPdate for each row
--before uPdate
--before uPdate for each row
--after uPdate
--after uPdate for each row
--执行的顺序是:#1. 执行before语句级的触发器,对于受语句影响的每一行:
-- #2. 执行级触发器,执行DML语句
--执行after行级的触发器
--#3. 执行 after语句级的触发器
  before delete on aaa  --删除操作前aaa表的触发器
  
  for each row --对表的每一行触发器执行一次。如果没有这一选项,则只对整个表执行一次。
declare
begin
     /*如果插入的任然是aaa表的话,会出现:第 1 行出现错误:
ORA-04091: 表 QUERY.AAA 发生了变化, 触发器/函数不能读它
ORA-06512: 在 "QUERY.EMP", line 4 (QUERY表示user,line表示行数,EMP表示触发器名称)
ORA-04088: 触发器 'QUERY.EMP' 执行过程中出错*/
  /*将修改前的数据插入到日志表aaa_tmp里去,以供监督使用*/
  insert into aaa_tmp(AID,ANAME,PRICE)
  
  values(:old.AID,:old.ANAME,:old.PRICE);--:old表示原来的数据,
                                         --:new表示插入的新数据                                   
end emp;
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表