zoukankan      html  css  js  c++  java
  • 数据库排它操作(2)

        续:

        排它操作不只 FOR UPDATE 就能够,它还须要一个更新标志。

        举个样例:

        要 更新数据表TABLE表,表中字段ID为主键。然后A进行了例如以下操作

    SELECT ID FROM TABLE WHERE * FOR UPDATE

    UPDATE TABLE SET * WHERE ID=*;
        A先锁了符合条件的数据,然后进行了更新操作,之后是COMMIT之类的。

        问题来了:

        TIME1时刻。A了解到数据库TABLE表ID=1的列不符合状况,他在TIME2时刻准备运行上面的操作进行改动; 可是B也查到了这个状况,却在TIME1.5的时刻完毕了TABLE的更改。这时候A改动的就是B改过后的数据。

        解决:

        须要一个參照标志。如果为UPD字段。

        A要改动表中ID=1的数据,须要先进行查询ID=1数据对于的UPD字段的值;

    SELECT UPD FROM TABLE WHERE ID=1

        如果查找的UPD值为 vals=2014/11/14 1:04;

    SELECT ID FROM TABLE WHERE ID=1 AND UPD=vals FOR UPDATE 

        之后进行更新操作就没有问题了。

  • 相关阅读:
    MyCat清单
    Nginx整合Tomcat
    Nginx安装与配置
    Spring清单
    Shiro清单
    Dubbo清单
    MyBatis清单
    查询数据库的编码
    myBatis
    面试
  • 原文地址:https://www.cnblogs.com/zhchoutai/p/6703577.html
Copyright © 2011-2022 走看看