oracle 数据库伪列 ORA_ROWSCN 的介绍
ORA_ROWSCN 用来记录每一行数据最后修改时的SCN号,当应用使用乐观锁时,可以使用这列来控制版本。创建表时默认是 NOROWDEPENDENCIES,查询时显示的是该行所在的block 上最后一次修改的SCN,创建表时设置为 ROWDEPENDENCIES 时,每一行都有自己的 SCN。需要注意的是ROWDEPENDENCIES属性只有在创建表时使用才有效,对于已有的表,通过alter t
ORA_ROWSCN 可以用来记录表中每一行数据最后修改时的SCN号,当应用使用乐观锁时,可以使用这列来控制版本。
创建表时默认是 NOROWDEPENDENCIES,查询时显示的是该行所在的 block 上最后一次修改的SCN
创建表时设置为 ROWDEPENDENCIES 时,每一行都有自己的 SCN
需要注意的是ROWDEPENDENCIES属性只有在创建表时使用才有效,对于已有的表,通过alter table 语句是无效的,因此需通过重建表的方式来解决。
create table NOROWDEPENDENCIES
默认是 NOROWDEPENDENCIES
SQL> create table tmp_t100 (
id integer
);
insert into tmp_t100 values(1);
commit;
insert into tmp_t100 values(2);
commit;
可以看到 ORA_ROWSCN 是相同的。
SQL> select ora_rowscn,rowid,id from tmp_t100;
ORA_ROWSCN ROWID ID
---------- ------------------ ----------
102234285 AAB1TqAABAAArP5AAA 1
102234285 AAB1TqAABAAArP5AAB 2
SQL> update tmp_t100 set id=3 where id=2;
commit;
SQL> select ora_rowscn,rowid,id from tmp_t100;
ORA_ROWSCN ROWID ID
---------- ------------------ ----------
102234349 AAB1TqAABAAArP5AAA 1
102234349 AAB1TqAABAAArP5AAB 3
create table ROWDEPENDENCIES
SQL> create table tmp_t101 (
id integer
) rowdependencies;
insert into tmp_t101 values(1);
commit;
insert into tmp_t101 values(2);
commit;
SQL> select ora_rowscn,rowid,id from tmp_t101;
ORA_ROWSCN ROWID ID
---------- ------------------ ----------
102234957 AAB1TrAABAAArWBAAA 1
102234959 AAB1TrAABAAArWBAAB 2
可以看到 ORA_ROWSCN 是不同的。
SQL> update tmp_t101 set id=3 where id=2;
commit;
SQL> select ora_rowscn,rowid,id from tmp_t101;
ORA_ROWSCN ROWID ID
---------- ------------------ ----------
102234957 AAB1TrAABAAArWBAAA 1
102234988 AAB1TrAABAAArWBAAB 3
参考:
https://docs.oracle.com/en/database/oracle/oracle-database/19/sqlrf/ORA_ROWSCN-Pseudocolumn.html#GUID-8071AAB0-F656-4C93-B926-0BCE1439F121
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)