首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 数据库 > oracle >

commit与触发器的疑问,该怎么处理

2012-02-21 
commit与触发器的疑问一个表,它有一个行级触发器,进行update,delete,insert都会触发,现在我写如下代码进行

commit与触发器的疑问
一个表,它有一个行级触发器,进行update,delete,insert都会触发,现在我写如下代码进行数据操作:
delete from table1 where name = 'user1';
insert into table1 ('user1','mail');
commit;

它是不是会先触发delete事件,然后再触发insert事件?
还是要像下面这样写才会触发两个事件?
delete from table1 where name = 'user1';
commit;
insert into table1 ('user1','male');
commit;

[解决办法]
它是不是会先触发delete事件,然后再触发insert事件?
是的.

delete from table1 where name = 'user1';
insert into table1 ('user1','mail');
commit;
这样就可以

相当于
delete from table1 where name = 'user1';
执行触发器;
insert into table1 ('user1','mail');
执行触发器;

触发器和出发他的语句相当于同一个事物,他们会一起提交或者回滚.

[解决办法]
1. 会2次触发触发器的执行,一次是由delete事件触发,一次是由insert事件触发。

2. 这2种操作,对触发器的触发是一致的。
[解决办法]
触发器的触发与你delete insert语句commit没有联系吧,commit的作用提交这个transaction,让其他的user也能看到你的update,commit后就不能rollback了!
[解决办法]
會分別觸發,然後一起提交transaction,如果一方不符合要求則不能提交。
[解决办法]
触发是有先后,但是是作为一个transaction,一起提交。应该用上面那个!

热点排行