表名:test_time_jisuan3表结构如下:字段名称 字段类型 注释
id char(10) id
leijiashijian number 累加时间,默认值为0
gengxinshijian date 更新时间现在表中有一条数据
id leijiashijian gengxinshijian
1 0 2010-9-8 9:43:23我写了一个触发器,当这个表被更新时,更新leijiashijian这个字段,值为两次更新时间的差。触发器如下:
create or replace trigger test_time_update before update of gengxinshijian on test_time_jisuan3
for each row
declare
t_leijia number;begin
t_leijia := :old.leijiashijian + (:new.gengxinshijian - :old.gengxinshijian)*24*60;
update test_time_jisuan3 set leijiashijian = t_leijia,gengxinshijian = :new.gengxinshijian where id = '1';
end;触发器编译没有错误,但是更新test_time_jisuan3表时会弹出错误提示
ORA-04091: table AVATAR.TEST_TIME_JISUAN3 is mutating,trigger/function may not see it;
ORA-06512: at "AVATAR.TEST_TIME_UPDATE",line 6
ORA-04088: error during execution of tirgger 'AVATAR.TEST_TIME_UPDATE'更新语句如下:
update test_time_jisuan3 set gengxinshijian = sysdate where id = '1';
commit请各位帮我看一下到底哪错了,谢谢
id char(10) id
leijiashijian number 累加时间,默认值为0
gengxinshijian date 更新时间现在表中有一条数据
id leijiashijian gengxinshijian
1 0 2010-9-8 9:43:23我写了一个触发器,当这个表被更新时,更新leijiashijian这个字段,值为两次更新时间的差。触发器如下:
create or replace trigger test_time_update before update of gengxinshijian on test_time_jisuan3
for each row
declare
t_leijia number;begin
t_leijia := :old.leijiashijian + (:new.gengxinshijian - :old.gengxinshijian)*24*60;
update test_time_jisuan3 set leijiashijian = t_leijia,gengxinshijian = :new.gengxinshijian where id = '1';
end;触发器编译没有错误,但是更新test_time_jisuan3表时会弹出错误提示
ORA-04091: table AVATAR.TEST_TIME_JISUAN3 is mutating,trigger/function may not see it;
ORA-06512: at "AVATAR.TEST_TIME_UPDATE",line 6
ORA-04088: error during execution of tirgger 'AVATAR.TEST_TIME_UPDATE'更新语句如下:
update test_time_jisuan3 set gengxinshijian = sysdate where id = '1';
commit请各位帮我看一下到底哪错了,谢谢
解决方案 »
- 解释“TYPE dept_table_type IS TABLE OF departments.department_name%TYPE INDEX BY PL
- 关于下面设置问题
- 复制表数据的问题
- union all时报ORA-03113:通信通道的文件结束
- 9i下建立物化视图需要哪些权限
- 谁有分析函数的资料
- 在Oracle Form Builder中如何调用动态库?
- 查询数据时出现Message: ORA-01722:的问题
- 各位大哥,我如何下载oracle9i的补丁9.2.0.6 for windows
- oracle字符号集的问题,为什么在win2000上用client上的sqlplus选出的数据是乱码???
- oracle小問題
- oracle数据库异地备份,在不同主机上建立物理备用数据库
会启动事务表test_time_jisuan3被锁定了 触发器无法操作这个表。
create or replace trigger test_time_update
before update of gengxinshijian on test_time_jisuan3
for each row
declare
t_leijia number;
begin
:new.leijiashijian := :old.leijiashijian + (:new.gengxinshijian - :old.gengxinshijian)*24*60;
end;
before update of gengxinshijian on test_time_jisuan3
for each row
declare
t_leijia number;
begin
:new.leijiashijian := :old.leijiashijian + (:new.gengxinshijian - :old.gengxinshijian)*24*60;
end;