commit,rollback会将当前session的操作进行提交或者回滚
而 触发器中 只是在执行了部分工作后 的操作,提交整个任务不合理
而 触发器中 只是在执行了部分工作后 的操作,提交整个任务不合理
解决方案 »
- 数据库正常,误删了表空间,但只有误删表空间的.dbf数据文件,能恢复数据吗?
- oracle 10g配置问题?着急啊!
- 高手指教:写个脚本,把coder下的每个表授权给mem用户(select,references权限)。
- 关于局部数据更改的sql语句,请教……
- 存储过程 动态查询用户下的表
- 始图能这么建立吗?
- ORA-03106错误,求解
- 求助一个SQL语句:替换某个字段的部分内容。
- 如何在vb中用ado连oracle中的blob字段?在线等。。。
- SQL语句中返回上周(周一至周日的日期)怎么个写法?
- Oracle:ORA-12541: TNS: 没有监听器
- 紧急求教!!在oracle里创建的触发器可以对特定用户禁用吗?
使用自治事务
是对的!用自治事务,就是触发器的事务独立于基表的事务,在触发器中提交、回滚不影响基表的事务,
自治事务特别适用于数据库的审计上,比如你举例的应用。具体用法很简单,只是添加一句语句。如下:
create or replace trg_x
after
insert or update or delete on x
for each rowdeclare
PRAGMA AUTONOMOUS_TRANSACTION; -- 自治事务
....
begin
if inserting then
....
....
insert into y values(.....);
commit; -- 可以提交,也可以回滚,不会报错的。
--rollback;
end;