首页 > 其他 > 详细

使用ORA_ROWSCN实现乐观锁定

时间:2014-10-30 12:55:42      阅读:260      评论:0      收藏:0      [点我收藏+]
实现乐观锁定一般使用时间戳或者版本列的方式
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;
bubuko.com,布布扣

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

使用ORA_ROWSCN实现乐观锁定

原文:http://blog.itpub.net/29254281/viewspace-1304853/

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!