我在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相关问答推荐

一系列日期中每个日期的分组聚合计数

获取特定列分组的最大序列号

查询数据如何使用 kusto(Azure 数据资源管理器)KQL 中的偏移量进行分页

如何识别跨数组列的不同组合,然后在 sql presto 中取消嵌套

Erlang 数据库加入关联

根据列规则选择第一个匹配项

如何分组输出 2 列中的每个值组合? - SQL

SQL 中扁平化的最佳 JSON 数组设置

SQL - 按订单条件分组

如何使用 group by 检索不同的数据

如何在 Sql 中聚合

oracle DB 为什么字符串中有空间比较总是返回false?

StudyId分配一个 'Y/N'

BQ - 从不连接的结构数组中获取字段

oracle json_value vs. json_table 解释查询计划

当行值非零时获取列表聚合中的列名

应用 GROUP BY 后判断相同的数量

如何在 SQL Server 中以整数形式创建日期、月份和年份

使用 Python 连接到 Microsoft SQL 服务器

使用 ActiveRecord 进行 GROUP BY 和 COUNT