我在postgresql 9.4数据库中定义了一个数组字段:

character varying(64)[]

我可以用一个空数组,例如{}作为该字段的默认值吗?

如果只设置括号{},我会遇到以下错误:

SQL error:

ERROR:  syntax error at or near "{"
LINE 1: ...public"."accounts" ALTER COLUMN "pwd_history" SET DEFAULT {}
                                                                     ^

In statement:
ALTER TABLE "public"."accounts" ALTER COLUMN "pwd_history" SET DEFAULT {}

推荐答案

您需要使用显式array初始值设定项并将其转换为正确的类型:

ALTER TABLE public.accounts 
    ALTER COLUMN pwd_history SET DEFAULT array[]::varchar[];

Sql相关问答推荐

在SQL中查询SQL以返回NULLS和空数据集的 node 列表

在SQL中对字符串进行逻辑排序,将数字部分排序为数字值

如何在T—SQL中找到值更改之前的日期?

SUM(条件)在Oracle?

基于多个字段删除Access中的重复记录,同时保留最低优先级

为表中每个缺少的引用创建新行

SQL Oracle条件分组依据

解析SQL Server中的嵌套JSON

如何从JSON数组中 Select 多个值

防止ActiveRecord迁移在db/structure.sql中进行巨大更改

SQL:如何在表中同时使用GROUPING和CONDITION?

Postgres SQL查询从字符串中获取邮箱地址

如何用HeidiSQL在Firebird中设置超时?

在WHERE EXISTS子查询中,列返回是否重要?

显示所有组并计算给定组中的项目(包括 0 个结果)

两个具有 NULL 值的表达式结果之间的差异

Spark / Hive:如何获取列中正值的百分比?

如何在 postgres 中旋转某些数据字段

Postgres存在限制问题「小值」

交叉应用 OPENJSON / PIVOT - 错误的顺序