【问题标题】:postgresql 10 altering serial column error 42p01postgresql 10 更改串行列错误 42p01
【发布时间】:2021-07-20 02:33:56
【问题描述】:

在更正现有表以在主键上使用串行列时遇到问题。为了模拟问题,我创建了一个新表:

CREATE TABLE markets."TestSequence" (
    "Id" integer NOT NULL,
    "Name" text COLLATE pg_catalog."default",
    CONSTRAINT "PK_TestSequence" PRIMARY KEY ("Id")
);

然后我运行了导致问题的查询:

ALTER TABLE markets."TestSequence" ALTER COLUMN "Id" TYPE integer;
ALTER TABLE markets."TestSequence" ALTER COLUMN "Id" SET NOT NULL;
CREATE SEQUENCE "TestSequence_Id_seq" AS integer START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE;
ALTER TABLE markets."TestSequence" ALTER COLUMN "Id" SET DEFAULT (nextval('"TestSequence_Id_seq"'));
ALTER SEQUENCE "TestSequence_Id_seq" OWNED BY "TestSequence"."Id";

我收到以下错误:

ERROR:  relation "TestSequence" does not exist
SQL state: 42P01

根据doc OWNED BY 不带任何架构前缀。所以我尝试创建没有架构的表,它工作正常。

CREATE TABLE "TestSequence" (
    "Id" integer NOT NULL,
    "Name" text COLLATE pg_catalog."default",
    CONSTRAINT "PK_TestSequence" PRIMARY KEY ("Id")
);

并运行相应的更改查询:

ALTER TABLE "TestSequence" ALTER COLUMN "Id" TYPE integer;
ALTER TABLE "TestSequence" ALTER COLUMN "Id" SET NOT NULL;
CREATE SEQUENCE "TestSequence_Id_seq" AS integer START WITH 1 INCREMENT BY 1 NO MINVALUE NO MAXVALUE NO CYCLE;
ALTER TABLE "TestSequence" ALTER COLUMN "Id" SET DEFAULT (nextval('"TestSequence_Id_seq"'));
ALTER SEQUENCE "TestSequence_Id_seq" OWNED BY "TestSequence"."Id";

如何使这项工作适用于与架构的关系?

【问题讨论】:

    标签: postgresql


    【解决方案1】:

    您链接的doc 表示,owned by

    指定的表必须具有相同的所有者并且在相同的架构中 作为序列。

    你没有为序列指定schema,所以默认创建在public,和表schema不一样。

    尝试将序列创建为

    CREATE SEQUENCE markets."TestSequence_Id_seq" AS integer  ...
    

    话虽如此,没有什么能阻止您指定序列和表的架构

    ALTER SEQUENCE markets."TestSequence_Id_seq" OWNED BY markets."TestSequence"."Id";
    

    【讨论】:

    • 我在创建序列、nextval() 和更改序列上添加了架构,但我得到了同样的错误。
    • @herme0 查看编辑,您可以为表和序列指定架构
    猜你喜欢
    • 2014-12-25
    • 2011-02-13
    • 2020-09-19
    • 1970-01-01
    • 2019-06-10
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    相关资源
    最近更新 更多