如何使用 Ecto 在 Postgres table 上获得独占锁?
How to get an exclusive lock on a Postgres table using Ecto?
我如何锁定整个 Postgres table,这样其他进程就无法更新 table 中的任何行(但仍然可以读取 SELECT 中的行) ?
我认为我想要的锁类型是独占的,但我不确定如何使用 Ecto 查询为整个 table 获取这样的锁。
谢谢!
使用LOCK
:
LOCK my_table IN EXCLUSIVE MODE;
注意LOCK TABLE
只能在交易块中使用。
另见 How to use raw sql with ecto Repo
我如何锁定整个 Postgres table,这样其他进程就无法更新 table 中的任何行(但仍然可以读取 SELECT 中的行) ? 我认为我想要的锁类型是独占的,但我不确定如何使用 Ecto 查询为整个 table 获取这样的锁。
谢谢!
使用LOCK
:
LOCK my_table IN EXCLUSIVE MODE;
注意LOCK TABLE
只能在交易块中使用。
另见 How to use raw sql with ecto Repo