postgresql - 无法在 DEFAULT 表达式中使用列引用 - 尝试为自定义列名设置默认值
问题描述
我有这张表,我使用 pgLoader 从 MySQL 迁移
CREATE TABLE IF NOT EXISTS schema.example
(
"ExampleID" integer NOT NULL,
"Name" character varying(255) COLLATE pg_catalog."default" NOT NULL,
CONSTRAINT "idx_43997_PRIMARY" PRIMARY KEY ("ExampleID"),
)
我正在尝试将 ExampleID 转换为串行,因此它将使用此方法自动递增: 将主键 int 类型更改为串行
所以我在做
CREATE SEQUENCE example_id_seq MINVALUE 3
哪个工作正常,但随后
ALTER TABLE example ALTER "ExampleID" SET DEFAULT nextval('example_id_seq')
给出错误:
ERROR: cannot use column reference in DEFAULT expression
SQL state: 0A000
但是,如果我删除“”并像这样放置 ExampleID:
ALTER TABLE example ALTER ExampleID SET DEFAULT nextval('example_id_seq')
我会得到错误
ERROR: column "exampleid" of relation "example" does not exist
SQL state: 42703
解决方案
问题是与示例中的不同
ALTER TABLE example ALTER "ExampleID" SET DEFAULT nextval('example_id_seq')
我忘了把''放在序列名称旁边,所以它是
ALTER TABLE example ALTER "ExampleID" SET DEFAULT nextval(example_id_seq)
列引用是它误将列名引用的顺序。
推荐阅读
- javascript - Webpack 5.3.1 TypeError:Object.getOwnPropertyDescriptors 不是函数
- .net-core - 如何排除程序集被打包到 PublishSingleFile 应用程序中
- c# - 如何更改 IdentityServer OIDC 发现端点基本 URL?
- python - 从图片 PILLOW 中删除选定区域
- python - 创建域名和ips到字节的文件
- python - 根据值转换python列表中的值
- reactjs - useEffect() 触发组件在一个函数中重新呈现,但不在另一个函数中。两个函数都改变状态。我错过了什么?
- python - 为什么我的不和谐机器人代码没有运行任何东西?
- visual-studio-code - Visual Studio Code 中的多个 SSH 连接
- json - 在vue中合并mixin