24. (ora-01410无效的rowid)临时表 on commit delete rows 与 on commit preserve rows 的区别
Posted on 2015-12-04 10:16 zkx4213 阅读(343) 评论(0) 编辑 收藏 举报ora-01410无效的rowid解决方式:
把临时表空间改成会话级别的就可以了,即把临时表的创建选项由on commit delete rows改为on commit preserve rows,就可以了
-- 事务级临时表:提交时删除数据
create global temporary table tmp_table1
(
x number
) on commit delete rows ;
-- 会话级临时表:会话结束时删除数据
create global temporary table tmp_table2
(
x number
) on commit preserve rows ;
insert into tmp_table1
values(1);
insert into tmp_table1
values(2);
insert into tmp_table1
values(3);
insert into tmp_table2
values(1);
insert into tmp_table2
values(2);
insert into tmp_table2
values(3);
select * from tmp_table1 ;
X
1
2
3
select * from tmp_table2 ;
X
1
2
3
commit;
select * from tmp_table1 ;
-- 无结果输出
select * from tmp_table2 ;
X
1
2
3
SQL> conn / as sysdba;
SQL> select * from user01.tmp_table1 ;
-- 无结果输出
SQL> select * from user01.tmp_table2 ;
-- 无结果输出