如何在不转储的情况下更改postgresql中列的位置

时间:2018-06-28 05:54:46

标签: sql postgresql

我知道唯一的解决方法是转储表,然后使用所需列的正确位置重新创建整个数据库。

但是问题在于,列之一是数据库中许多表的外键,因此无法删除整个表。我也不能删除任何列,因为外键列位于表的最后。请给我一个解决方案。

如果该问题重复,请给我正确答案的链接。

edit:为得到更多说明,我想使用insert命令添加行,问题是倒数第二个列的类型为serial。我的主要目的是在发出插入命令时不要触摸串行列

1 个答案:

答案 0 :(得分:1)

您需要的只是一个自定义插入语句,

例如,

您的桌子看起来像这样

CREATE TABLE "public"."ada" (

    "trandate" date, 
    "locname" text, 
    "totusers" integer, 
    "actusers" integer, 
    "datausage" integer, 
    "issues" integer, 
    "id" serial PRIMARY KEY, 
    "issuessolved" integer
);

并且insert语句可以写为

INSERT INTO "public"."ada"
        ("trandate"
        ,"locname"
        ,"totusers"
        ,"actusers"
        ,"datausage"
        ,"issues"
        ,"issuessolved")
    VALUES
        (<trandate, date>
        ,<locname, text>
        ,<totusers, integer>
        ,<actusers, integer>
        ,<datausage, integer>
        ,<issues, integer>
        ,<issuessolved, integer>);