基本上我想这样做:
begin;
lock table a;
alter table a rename to b;
alter table a1 rename to a;
drop table b;
commit;
即。获得控制并替换我的旧桌子,而没有人可以访问它。
答案 0 :(得分:7)
简单:
BEGIN;
DROP TABLE a;
ALTER TABLE a1 RENAME TO a;
COMMIT;
DROP TABLE
无论如何都会在桌面上获得ACCESS EXCLUSIVE
锁。明确的LOCK
命令并不是更好。重命名一个死人只是浪费时间。
尝试访问表的并发事务会发生什么?它并不那么简单,请阅读:
解释为什么您可能会看到如下错误消息:
ERROR: could not open relation with OID 123456
答案 1 :(得分:0)
创建SQL备份,直接在backup.sql文件中进行更改并还原数据库。在为表组(Postgres dbms)添加INHERIT以从子表中删除继承的字段时,我使用了这个技巧。