如何更换postgres中的表格?

时间:2015-09-04 19:41:26

标签: postgresql

基本上我想这样做:

begin;
lock table a;
alter table a rename to b;
alter table a1 rename to a;
drop table b;
commit;

即。获得控制并替换我的旧桌子,而没有人可以访问它。

2 个答案:

答案 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以从子表中删除继承的字段时,我使用了这个技巧。