满分挑战:长时间的导数据过程中,触发器如何工作? 如果只在10:30做commit的话1. 10:002. 不能DIY. 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 commit操作是在10:30导入结束后执行哪位兄弟有这方面的经验,不妨写一写,谢谢! 请教: jlandzpa(ORA-00600) 兄难道做select 的时候会把table1锁住,或使trigger失效?因为他是往table2里写数据,对table1只是select,应该不会影响table1的使用,以及trigger的触发吧? 写错了吧?触发器监听的是table2?table1只是被select数据,哪里有insert?如果不commit,那么表table2在10:00 - 10:30期间其实并没有insert事件发生,因此trigger不起作用。 TO wpltt(NullpointException):没有写错,TABLE1表中会不断的有数据插入或者更新,在导数据的过程中,TABLE1也会有数据变化。TRIGGER监听的是TABLE1。难就难在这里! btw:如果你的TABLE1中这段时间有commit并且回滚段不是足够大的话将出现 ora-01555错误 对于1,我刚才做了个试验,先insert into table2 select * from table1 然后在另一个会话中对table1进行编辑,中间提交了三次。最后,select * from table2,结果是table1的旧数据 。 1、完全正确,虽然在插入TABLE2中数据时用了很长时间,但对于一个SESSION的一次操作,ORACLE保持数据读的一致性,所以即便在导数的过程中出现的数据变化,则操作的结果将仍然是10:00时的数据。 2、对于触发器就不同了,因为你的触发器是键在TABLE1上的,所以触发器的工作与导数是完全分开了,只要对TABLE1有操作,触发器就会触发,而触发器的作用结果也将与启动触发器的事务一块提交或回退。 另外,我认为不会出现biti_rainy(biti_rainy)提到的 ora-01555错误错误,即便出现也不是对TABLE1操作COMMIT的原因,因为操作TABLE1和INTO TABLE2是两个不同的事务,两者是没有关系的。而且如果TABLE1中数据量很大的话,SELECT .. INTO ..可以单独指定一个大的回滚段。 oracle联机访问数据库的问题 oracle安装后不能使用 xp系统下的oracle9i进行dataguard,备份库无法正常启动 各位高手,请教一sql写法,,,谢谢!! 如何使用PL/SQL解析XML文档 查询时日期为变量,查询时间过长 oracle9i 中文版 有没有自带图形界面的数据库管理器啊 在存储过程中临时表怎样创建 ?怎么把临时表的结果集传出? 重分答谢解决此问题者 小白跪求,老板急要,如何在个人的一台计算机上利用Oracle和PL/SQL developer 处理数据(安装步骤) 请问哪里有oledb的驱动? Oracle的登录问题!
难道做select 的时候会把table1锁住,或使trigger失效?
因为他是往table2里写数据,对table1只是select,应该不会影响table1的使用,以及trigger的触发吧?
将出现 ora-01555错误
先
insert into table2 select * from table1 然后在另一个会话中对table1进行编辑,中间提交了三次。
最后,select * from table2,结果是table1的旧数据 。
2、对于触发器就不同了,因为你的触发器是键在TABLE1上的,所以触发器的工作与导数是完全分开了,只要对TABLE1有操作,触发器就会触发,而触发器的作用结果也将与启动触发器的事务一块提交或回退。
另外,我认为不会出现biti_rainy(biti_rainy)提到的 ora-01555错误错误,即便出现也不是对TABLE1操作COMMIT的原因,因为操作TABLE1和INTO TABLE2是两个不同的事务,两者是没有关系的。而且如果TABLE1中数据量很大的话,SELECT .. INTO ..可以单独指定一个大的回滚段。