delete未提交rollback是否会改变行号
2016-06-22 18:54
148 查看
今天做个试验,delete未提交rollback是否会改变行号?
SQL> insert into dxmy values(1,'dxmy2');
1 row inserted
SQL> commit;
Commit complete
SQL>
SQL> select dbms_rowid.rowid_relative_fno(rowid) fno,
2 dbms_rowid.rowid_block_number(rowid) block_id,
3 dbms_rowid.rowid_row_number(rowid) row_id,
4 id
5 from dxmy;
FNO BLOCK_ID ROW_ID ID
---------- ---------- ---------- ----------
4 462 1 2
4 462 2 3
4 462 3 4
4 463 1 1
然后就发现:
1.delete未提交即rollback不会改变行号
2.delete提交后插入数据,可能会改变行号,但是也有可能不改变,但行的位置肯定会改变。
创建测试表: create table dxmy (id number,name varchar2(100)); 插入数据 insert into dxmy values(1,'dxmy'); insert into dxmy values(2,'dxmy'); insert into dxmy values(3,'dxmy'); insert into dxmy values(4,'dxmy'); commit; 查看行号 SQL> select dbms_rowid.rowid_relative_fno(rowid) fno, 2 dbms_rowid.rowid_block_number(rowid) block_id, 3 dbms_rowid.rowid_row_number(rowid) row_id, 4 id 5 from dxmy; FNO BLOCK_ID ROW_ID ID ---------- ---------- ---------- ---------- 4 462 0 1 4 462 1 2 4 462 2 3 4 462 3 4 delete,但是不提交: SQL> delete dxmy where id = 1; 1 row deleted SQL> SQL> select dbms_rowid.rowid_relative_fno(rowid) fno, 2 dbms_rowid.rowid_block_number(rowid) block_id, 3 dbms_rowid.rowid_row_number(rowid) row_id, 4 id 5 from dxmy; FNO BLOCK_ID ROW_ID ID ---------- ---------- ---------- ---------- 4 462 1 2 4 462 2 3 4 462 3 4 rollback: SQL> rollback; Rollback complete SQL> select dbms_rowid.rowid_relative_fno(rowid) fno, 2 dbms_rowid.rowid_block_number(rowid) block_id, 3 dbms_rowid.rowid_row_number(rowid) row_id, 4 id 5 from dxmy; FNO BLOCK_ID ROW_ID ID ---------- ---------- ---------- ---------- 4 462 0 1 4 462 1 2 4 462 2 3 4 462 3 4 行号未改变。 那如果delete之后,我提交了,然后重新插入呢? SQL> delete dxmy where id = 1; 1 row deleted SQL> commit; Commit complete SQL> insert into dxmy values(1,'dxmy'); 1 row inserted SQL> commit; Commit complete SQL> select dbms_rowid.rowid_relative_fno(rowid) fno, 2 dbms_rowid.rowid_block_number(rowid) block_id, 3 dbms_rowid.rowid_row_number(rowid) row_id, 4 id 5 from dxmy; FNO BLOCK_ID ROW_ID ID ---------- ---------- ---------- ---------- 4 462 1 2 4 462 2 3 4 462 3 4 4 463 0 1 <pre name="code" class="html">SQL> delete dxmy where id = 1; 1 row deleted SQL> commit; Commit complete
SQL> insert into dxmy values(1,'dxmy2');
1 row inserted
SQL> commit;
Commit complete
SQL>
SQL> select dbms_rowid.rowid_relative_fno(rowid) fno,
2 dbms_rowid.rowid_block_number(rowid) block_id,
3 dbms_rowid.rowid_row_number(rowid) row_id,
4 id
5 from dxmy;
FNO BLOCK_ID ROW_ID ID
---------- ---------- ---------- ----------
4 462 1 2
4 462 2 3
4 462 3 4
4 463 1 1
然后就发现:
1.delete未提交即rollback不会改变行号
2.delete提交后插入数据,可能会改变行号,但是也有可能不改变,但行的位置肯定会改变。
相关文章推荐
- ubuntu/var/log/下各个日志文件
- android 智能提示
- Python 描述符(descriptor) 杂记
- BZOJ3545: [ONTAK2010]Peaks
- Geekban极客班C++STL与泛型编程 第二周
- Android 权限应用
- 10-5-希尔排序-内部排序-第10章-《数据结构》课本源码-严蔚敏吴伟民版
- 在有跳板机的情况下,SecureCRT自动连接到目标服务器
- BZOJ2795: [Poi2012]A Horrible Poem
- NYOJ 三个水杯 题解
- linux gzip gunzip
- java 正则表达式
- 聊聊拥堵费
- 京东“竖亥小车”秒测商品尺寸重量
- BZOJ3551: [ONTAK2010]Peaks加强版
- Android ViewGroup事件分发机制
- Ionic实战九:ionic视频播放
- python mysql
- 开发RESTful web Service
- 51CTO学院三周年-我的rhec7认证之路