如何在运行ALTER或在该表上创建TRIGGER之前检查表是忙还是空闲?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (57)

我们有数千张表。在这些表中,我们有几个表。有些时候很忙。如果我执行任何ALTER语句或在这些表上创建触发器,我将无法执行此操作。如何在运行ALTER或在postgresql数据库中的该表上创建TRIGGER之前检查表是忙还是空?

提问于
用户回答回答于

下面的查询返回数据库中的锁定对象。

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;
用户回答回答于

最简单的方法就是运行

LOCK TABLE mytable NOWAIT;

如果没有错误,则ALTER TABLE语句可以继续而无需等待。

扫码关注云+社区

领取腾讯云代金券