数据库

 首页 > 数据库 > MySql > 数据库排它操作(2)

数据库排它操作(2)

分享到:
【字体:
导读:
         摘要:数据库的排它操作 ...

数据库排它操作(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 

    之后进行更新操作就没有问题了。 数据库排它操作(2)
分享到:
【MongoDB】从入门到精通mongdb系列学习...
【MongoDB】从入门到精通mongdb系列学习宝典,想学mongodb小伙伴请进来最近一段时间在学习MongoDB,在学习过程中总共编写了四十余篇博客。从mongodb软件下载到分片集群的搭建。 从理论讲解到实例练习。现在把所有博客的内容做个简单目录,方便阅读的小伙伴查询。  一、 入门  下载mongodb   [英文]  安装Mongodb   ...
SQL中EXISTS的用法
SQL中EXISTS的用法比如在Northwind数据库中有一个查询为SELECT c.CustomerId,CompanyName FROM Customers cWHERE EXISTS(SELECT OrderID FROM Orders o WHERE o.CustomerID=c.CustomerID) EXISTS用于检查子查询是否至少会返回一行数据,该子查询实际上并不返回任何数据,而是返回值True或FalseEXISTS 指定一个子查询,检测...
  •         php迷,一个php技术的分享社区,专属您自己的技术摘抄本、收藏夹。
  • 在这里……