ITPub博客

首页 > 应用开发 > IT综合 > 使用校验方法控制lock

使用校验方法控制lock

原创 IT综合 作者:liang573728 时间:2019-01-15 15:51:06 0 删除 编辑
校验函数:dbms_crypto.hash[@more@]

1 begin
2 for x in( select deptno,dname,loc from dept where deptno = 10)
3 loop
4 dbms_output.put_line('Dname: '||x.dname);
5 dbms_output.put_line('dname: '||x.dname);
6 dbms_output.put_line('Hash: '||dbms_crypto.hash(
utl_raw.cast_to_raw(x.deptno||'/'||x.dname||'/'||x.loc),dbms_crypto.hash_sh1));
7 end loop;
8* end;
SQL> /

PL/SQL 过程已成功完成。

已用时间: 00: 00: 00.53
SQL> set serveroutput on
SQL> /
Dname: Sales
dname: Sales
Hash: 83CCE0C4D44D19E142ECB1132E4FFD26B03834F9

PL/SQL 过程已成功完成。


1 begin
2 for x in( select deptno,dname,loc
3 from dept
4 where deptno = 10
5 for update nowait )
6 loop
7 if ( hextoraw('83CCE0C4D44D19E142ECB1132E4FFD26B03834F9') <> dbm
s_crypto.hash(
8 utl_raw.cast_to_raw(x.deptno||'/'||x.dname||'/'||x.loc),dbms_crypto.hash_sh
1) )
9 then
10 raise_application_error(-20001,'Row was modified');
11 end if;
12 end loop;
13 update dept set dname = 'Super Sales'
14 where deptno = 10;
15 commit;
16* end;
17 /

PL/SQL 过程已成功完成。

已用时间: 00: 00: 00.29
SQL>

这种方法会造成系统额外开销,主要用于网络友好型系统,至于CPU密集型的不适合.

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

请登录后发表评论 登录
全部评论

注册时间:2005-10-15

  • 博文量
    152
  • 访问量
    138341