繁体   English   中英

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

[英]How to add a WHERE clause in UPDATE query in Datamapper

我有一个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 ,其他线程则不应。 本质上,我想做的是通过datamapper运行此查询:

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 )

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM