在Postgres中。我会让我的会话等待,直到一个表的所有未提交的事务都被提交或回滚。是否有一个查询可以运行来检测任何会话,这些会话对表和事务的开始时间戳具有未提交的DML。我想实现一些类似于Oracle的WAIT_ON_PENDING_DML函数的东西:
https://docs.oracle.com/en/database/oracle/oracle-database/19/arpls/DBMS_UTILITY.html#GUID-314EDB9B-7948-4093-8A74-7159186168CE
我一直在看pg_locks视图。我不确定我是否能使用它。
1条答案
按热度按时间fslejnso1#
你可以这样做:
字符串
SHARE
锁与所有DML冲突,如果语句无法在一秒内获取SHARE
锁,则将终止并返回错误。请注意,所有其他数据修改语句都会被阻塞,直到
LOCK
语句结束,这与您所希望的不同。您可以选择一个更小的lock_timeout
,并暂时停止,直到重试。