空数组作为PostgreSQL数组列的默认值

时间:2015-06-19 08:16:04

标签: sql postgresql

我在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 {}

3 个答案:

答案 0 :(得分:45)

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

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

答案 1 :(得分:3)

我测试了接受的答案和评论中的答案。它们都起作用。
我将对答案的注释进行分级,因为这是我的首选语法。

ALTER TABLE public.accounts 
    ALTER COLUMN pwd_history SET DEFAULT '{}';

答案 2 :(得分:1)

它在找不到 SET 的地方抛出了一个错误。这对我有用。

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