PostgreSQL添加带默认值的数组列的正确语法是什么
问题核心原因
你编写的SQL漏了DEFAULT关键字来声明列的默认值,同时数组字面量的包裹符号使用错误,PostgreSQL无法解析对应的语法。之前仅修改引号不生效的核心原因就是缺少DEFAULT关键字声明。
正确写法
你可以任选下面两种写法之一:
- 数组字面量写法(兼容性好)
ALTER TABLE "trips" ADD "sw_bounds" double precision[] NOT NULL DEFAULT '{0,0}';
- ARRAY构造器写法(可读性更高)
ALTER TABLE "trips" ADD "sw_bounds" double precision[] NOT NULL DEFAULT ARRAY[0,0];
语法说明
- PostgreSQL中默认值必须通过
DEFAULT关键字显式声明,不能直接写在NOT NULL约束之后 - 数组类型的标准声明方式为
数据类型[],数据类型 array属于非通用兼容写法,更推荐前者 - 双引号在PostgreSQL中仅用于标识标识符(如表名、列名),不能用来包裹值类内容;数组字面量需要用单引号包裹;反引号不属于PostgreSQL标准语法,不要使用。
内容的提问来源于stack exchange,提问作者asus
相关产品推荐
相关产品推荐

