gpt4 book ai didi

knex.js - 在 Knex 中手动锁定表

转载 作者:行者123 更新时间:2023-12-02 00:58:34 28 4
gpt4 key购买 nike

我有一个表,当向其中添加新行时,所有现有行都需要更新。本质上,在一个“插入”完成之前,我不想让另一个“插入”发生。

所以我猜普通的行级锁或读锁是不够的,想在事务期间直接锁表。

有没有办法在 Knex 中手动锁定表(在 ACCESS EXCLUSIVE 模式下)?

我的猜测是,这将涉及:

  • 运行原始 sql(锁定和解锁)并确保相同
  • 连接用于事务。

  • 有没有办法做到这一点?或者我有更好的解决方案来解决我的问题。

    附言我正在探索的另一种方法是使用作业队列并让单个工作人员插入记录(使用原始 sql 连接)。但有人告诉我这在多节点场景中不起作用。

    最佳答案

    使用 knex,您目前无法选择将查询发送到哪个连接,除非您正在使用事务。发送到同一个事务的所有查询也发送到同一个连接。

    发送锁定命令需要使用 knex.raw .

  • 开始交易
  • 将原始 SQL 锁定查询发送到事务
  • ???
  • 利润

  • 锁定的确切方式取决于您使用的数据库。通常在提交事务时会自动释放锁。

    关于knex.js - 在 Knex 中手动锁定表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52325771/

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