資料庫排它操作(2),資料庫排操作

來源:互聯網
上載者:User

資料庫排它操作(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 

    之後進行更新操作就沒有問題了。

相關文章

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.