gpt4 book ai didi

mysql - 如何在 Datamapper 的 UPDATE 查询中添加 WHERE 子句

转载 作者:太空宇宙 更新时间:2023-11-03 16:52:16 24 4
gpt4 key购买 nike

我有一个 Datamapper 模型,比如 XYZ。现在,有多个线程有时会使用此模型读取一行并尝试更新同一行 - 只有一个应该成功,具体取决于 XYZ 的属性,比如 abc

class XYZ
include DataMapper::Resource
property :id # primary key
property :abc
end

现在:

obj = XYZ.get(some_id)
obj.update(abc: 10) # Assume abc column value was 5 earlier

这可能发生在多个线程中,也可能同时发生。此外,列 abc 的新值在每个线程中都是不同的。曾经,当一个线程更新 abc 时,其他线程不应该更新。本质上,我要做的是通过数据映射器运行此查询:

UPDATE `xyz` SET `abc` = 20 WHERE `id` = <some id> AND `abc` = 5

model.update 函数不允许同时更新属性和设置该属性的条件。我知道我可以直接运行 SQL 查询;但是还有其他办法吗?

最佳答案

我会做这样的事情:

XYZ.all( :id => some_id, :abc => 5 ).update( :abc => 20 )

关于mysql - 如何在 Datamapper 的 UPDATE 查询中添加 WHERE 子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18650932/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com