我想获取一个lock
使用FORUPDATE OFtable_name
。与FORUPDATE
相比,FORUPDATE OF
仅锁定指定表中的行,并且连接的行不会被阻塞。但是,当我尝试使用以下代码段使用ecto执行此操作时,它失败了。
query =
Call
|> join_other_tables() # custom methods
|> Query.lock("FOR UPDATE OF calls")
原因是ecto为调用
使用别名,例如c0
,这意味着我还必须在lock表达式中使用别名才能使其正常工作。
query =
Call
|> join_other_tables() # custom methods
|> Query.lock("FOR UPDATE OF c0")
使用别名看起来不是一种正确的方法。还有其他方法可以让它工作吗?
请注意,现在您似乎可以使用一个片段来插入表名,请参见https://github.com/elixir-ecto/ecto_sql/pull/189.因此,Aleksei的解决方案现在应该有效:
from c in Call,
join: ..., # custom methods
lock: fragment("FOR UPDATE OF ?", c)
从Ectov3
开始,无法将参数化值传递给Query.lock
。它只接受二进制文件。
[命名绑定]也不起作用,因为ecto
内部会根据需要生成别名。
下面的方法可能是最接近的方法,但是它也不起作用,因为< code>Ecto。Query.lock/2不允许插值。
使用Ecto.Query.API.fragment
,它具有插值功能,带有关键字查询语法。有点像:
from c in Call,
join: ..., # custom methods
lock: fragment("FOR UPDATE OF ?", c)
问题内容: 我正在将SQLAlchemy与python结合使用,并且我想更新等于此查询的表中的特定行: 我通过sql alchemy编写了此代码,但无法正常工作: 返回此错误: 我该怎么做? 问题答案: 通常,您不使用,而是设置属性:
我有一个这样的实体: 我有一个生成HQL的代码: 执行更新的代码: 问题: 乐观锁在这里出现吗?在上述情况下,Hibernate是否会自动处理乐观锁定(运行HQL且没有会话)? 如果上述情况不正确,我需要自己实现:我阅读了Hibernate文档,其中说,我需要用注释一个字段。但是我应该专门为此在表中添加这个新字段吗?或者我可以为注释指定任何现有字段?这里有什么特殊处理吗? 在乐观锁定期间抛出的异常
背景: < li >我正在使用< code>npm和< code>docker在< code>node.js中编写代码。我试图让我的docker文件在构建时使用缓存,这样不会花太长时间。 < li >我们有一个“通用”存储库,用于保存在各种存储库中使用的逻辑,并通过npm软件包进行传播。 问题是: 我希望docker文件不要使用我的“通用”包上的缓存。 Docker文件: package.json
我正在使用ApachePOI将数据写入Excel文件,我希望第一行为只读,其他行可以随时编辑。但我没有找到有效的解决方法。 下面是我的代码: 看起来这个java代码块应该可以工作,但实际上它不仅会锁定第一行,还会锁定其他行的空单元格。 所以我想知道,有没有一种有效的方法可以使用apachepoi只锁定excel文件的第一行?
我想使用DynamoDBMapper只更新项目的特定属性。例如,我有一个带有属性的用户表。,id,name,地址。 我想只更新地址属性,而不是其他字段(选择性更新)。 我可以使用UpdateItemSpec找到一个示例,但在DynamoDBMapper中找不到。使用UpdateItemSpec,我可以使用withUpdateExpression()定义更新表达式。更多细节可以在这里找到。 是否有任