概述
本帖最后由 lihy114 于 2013-10-28 11:11 编辑
目的是想将对表名为a_user的表进行的增删改操作以及相应数据记录,a_user的表结构为
(
CODE_OLD VARCHAR2(30),
NAME_OLD VARCHAR2(30),
CORPID_OLD VARCHAR2(10),
CODE_NEW VARCHAR2(16),
NAME_NEW VARCHAR2(30),
CORPID_NEW VARCHAR2(16)
);
日志表test的结构如下:
(
CODE_OLD VARCHAR2(30),
NAME_OLD VARCHAR2(30),
CORPID_OLD VARCHAR2(10),
CODE_NEW VARCHAR2(16),
NAME_NEW VARCHAR2(30),
CORPID_NEW VARCHAR2(16),
v_tag varchar2(20)
);
触发器代码以及相应注释如下:
CREATE OR REPLACE TRIGGER tri_a_user
befor insert or update or delete
on a_user
for each row
declare
rowvar_user a_user%rowtype; --定义一个记录型变量
var_tag varchar2(10);
begin
if inserting then
select * into rowvar_user from a_user where code_old=: old.code_old; --取出插入的列对应的字段内容
var_tag:='insert';
elsif updating then
select * into rowvar_user from a_user where code_old=: old.code_old; --取出更新的列对应的字段内容
var_tag:='update';
elsif deleting then
select * into rowvar_user from a_user where code_old=: old.code_old; --取出删除的列对应的字段内容
var_tag:='delete';
end if;
insert into test values(rowvar_user.code_old,rowvar_user.name_old,rowvar_user.corpid_old,rowvar_user.code_new,rowvar_user.name_new,rowvar_user.corpid_new,var_tag); --将插入/更新/删除的列对应的字段内容以及DML操作的类型计入日志表test中
end tri_a_user;
现在是报错的,错误信息如下:
ORA-04091: 表 A_USER 发生了变化, 触发器/函数不能读它
ORA-06512: 在 "tri_a_user", line 9
ORA-04088: 触发器 'tri_a_user' 执行过程中出错
脚本行 8,语句行 1,列 7
我的判断应该是select * into rowvar_user from a_user where code_old=: old.code_old有问题
想请教一下,如何才能得到插入/更新/删除的列对应的字段内容呢?
多谢
最后
以上就是大力冬日为你收集整理的修改oracle 触发器,触发器实现对表增删改的记录的全部内容,希望文章能够帮你解决修改oracle 触发器,触发器实现对表增删改的记录所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复