【问题标题】:ALTERING MULTIPLE TABLES IN POSTGRES [duplicate]在 POSTGRES 中更改多个表 [重复]
【发布时间】:2020-06-13 21:40:34
【问题描述】:

我有多个表,我想在其中执行以下操作:

ALTER TABLE table_one DROP COLUMN id, ADD id SERIAL PRIMARY KEY;

我可以一次性完成吗?

【问题讨论】:

  • 您可以将多个 ALTER TABLE 语句放入一个事务中。这就是你所说的“一次”吗?另外,为什么要删除该列,然后再次重新创建同一列?如果您只想将其更改为自动增量列,还有更好的方法。
  • 我对 postgres 和 sql 还是很陌生。是的,我正在尝试将其更改为自动增量列。有哪些更好的方法?

标签: postgresql pgadmin alter-table


【解决方案1】:

您可以为每个表创建序列并将默认值添加到 id 列,例如,对于两个表,table1table2,这将是这样的:

do $$
declare maxid int;
begin
    select coalesce(max(id)+1, 1) from table1 into maxid;
    execute 'create sequence table1_id_seq START WITH '||maxid ;
    alter table table1 alter column id set default nextval('table1_id_seq');

    select coalesce(max(id)+1, 1) from table2 into maxid;
    execute 'create sequence table2_id_seq START WITH '||maxid ;
    alter table table2 alter column id set default nextval('table2_id_seq');
end;
$$ language plpgsql

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-09-27
    • 2018-05-11
    • 1970-01-01
    • 1970-01-01
    • 2012-06-06
    • 1970-01-01
    相关资源
    最近更新 更多