我们有数千张桌子。在这些表中,我们只有几个表。有时候很忙。如果我在这些表上执行任何ALTER语句或创建触发器,则将无法执行。在postgresql数据库中运行ALTER或在该表上创建TRIGGER之前,如何检查表是忙还是闲。
答案 0 :(得分:1)
最简单的方法是运行
LOCK TABLE mytable NOWAIT;
如果没有错误,则ALTER TABLE
语句可以继续进行而无需等待。
答案 1 :(得分:1)
下面的查询返回数据库中的锁定对象。
select t.relname, l.locktype, page, virtualtransaction, pid, mode, granted
from pg_locks l, pg_stat_all_tables t
where l.relation=t.relid
order by relation asc;