web-dev-qa-db-ja.com

デフォルト値で列挙フィールドを作成するにはどうすればよいですか?

  types = { # add your custom types here
          'attendance': ('Notconfirmed','Coming', 'Notcoming', 'Maycome',),
          }

  CREATE TYPE attendance AS ENUM types;

上記のクエリは、型で言及された列挙ラベルを持つ列挙型出席を作成します。デフォルトのラベルでタイプを作成する方法は?この場合、デフォルト値Notconfirmedで出席タイプを作成します。

22
RaviKiran

私はあなたと同じことを試みていて、stackoverflowでのみ回答を得ました。デフォルト値でENUMを作成することは可能です。これが私があなたのために得たものです。

CREATE TYPE status AS ENUM ('Notconfirmed','Coming', 'Notcoming', 'Maycome');

CREATE TABLE t (
    id serial,
    s status default 'Notconfirmed' -- <==== default value
);

INSERT INTO t(id) VALUES (default) RETURNING *; 

これは私にとって魅力のように働きました。

59

スダルシャンの言葉に加えて...

誰かが別のスキーマの例を必要とする場合:

CREATE TABLE schema_name.table_name ( -- 
    id serial,
    s schema_name.type_name default 'Notconfirmed'::schema_name.type_name
);
2
Norman Edance

テーブルに以下のクエリが必要な理由がわかりません。このラインなしでも試してみましたが、まだ機能します。

INSERT INTO t(id) VALUES (default) RETURNING *;
0
ferdousulhaque