使用ORA_ROWSCN实现乐观锁定

实现乐观锁定一般使用时间戳或者版本列的方式
oracle还可以使用ora_rowscn伪列实现
ora_rowscn可以查看块级或者行级大致的SCN信息,可以用于乐观锁定的判断.并且可以看到块或者行大致修改的时间。

Oracle文档描述如下
http://docs.oracle.com/cd/E11882_01/server.112/e41084/pseudocolumns007.htm#SQLRF50953

如果使用ora_rowscn查看行级scn信息,首先需要设置表的属性为ROWDEPENDENCIES
下面通过实验查看

drop table t1;
create table t1
(
    id int primary key,
    name varchar2(20) not null,
    createtime date default sysdate
) ROWDEPENDENCIES ;

insert into t1(id,name) values(1,'test1');
commit;

--稍等一会儿
exec Dbms_lock.sleep(10);
insert into t1(id,name) values(2,'test2');
commit;

--稍等一会儿
exec Dbms_lock.sleep(15);
insert into t1(id,name) values(3,'test3');
commit;

set linesize 400;
select 
to_char(scn_to_timestamp(ora_rowscn),'yyyy-mm-dd HH24:mi:ss') scn_time,
ora_rowscn scn,
id,name,
to_char(createtime,'yyyy-mm-dd HH24:mi:ss') ct from t1;

select table_name,dependencies from user_tables;


但是相应的,每行的存储空间增加6 byte
他相对于版本列,优点在于可以查看该行大致的更新时间
相对于时间戳,优点在于免去手工更新维护时间戳的工作

来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/29254281/viewspace-1304853/,如需转载,请注明出处,否则将追究法律责任。

转载于:http://blog.itpub.net/29254281/viewspace-1304853/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值