在法语中,我们把这个并发控制问题称为“咖啡杯原则”。在英语里应该是一样的,不是吗?
这是原则。让我们想象一下医院管理系统。医生使用应用程序显示病人并对其进行修改。在点击“更新”之前,他去喝杯咖啡。另一位医生在客户端应用程序上显示同一个病人,并单击“更新”。当第一位医生回来时,他点击“更新”。问题是:哪些更新必须被接受?实际上,这是一个反问:回答它的是开发人员/架构师。
我正在考虑的一个解决方案是在我的表中添加一列“锁定”。当我让病人进行更新时,我将布尔值设置为true,并在刚刚更新它时将其设置为false。任何“获取更新”将检查“锁定”是否设置在false上,以允许写入。
你认为使用这个解决方案有什么问题吗?
发布于 2011-07-12 12:20:34
在法语中我们称之为并发控制问题--咖啡杯原则。在英语里应该是一样的,不是吗?
我从来没有听过它在英语中的名字,但我明白你的意思。将英语作为第一语言使用的数据库开发人员在解释之前可能不理解您的意思,但在您解释之后他们应该理解它。
所有现代数据库都实现事务;正确使用事务将保证您想要的数据库行为。
没有必要使用“锁定”列。如果在事务中维护其状态,则对其状态的更改对其他事务是不可见的。如果在事务之外维护其状态,则会使其值与实际(dbms颁发和维护的)锁不一致。
https://stackoverflow.com/questions/6661692
复制相似问题