1. ホーム
  2. sql

PostgreSQL の配列カラムのデフォルト値としての空の配列

2023-10-30 07:27:22

質問

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[];