如何使用默认值创建枚举字段?

Rav*_*ran 18 postgresql postgresql-9.1

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

  CREATE TYPE attendance AS ENUM types;
Run Code Online (Sandbox Code Playgroud)

上面的查询使用类型中提到的枚举标签创建枚举类型出勤.如何创建具有默认标签的类型?在这种情况下,我想创建具有默认值Notconfirmed的出勤类型.

Sud*_*ere 51

我和你一样尝试,我只在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 *; 
Run Code Online (Sandbox Code Playgroud)

这对我来说就像一个魅力.

  • 或者对于现有表``` CREATE TYPE statuses AS ENUM ('Notconfirmed','Coming', 'Notcoming', 'Maycome'); ALTER TABLE t 添加状态状态默认为“未确认”;`` (3认同)
  • 错误:无法在 DEFAULT 表达式中使用列引用 (3认同)

Nor*_*nce 8

除了苏达山的话之外……

如果有人需要不同模式的示例:

CREATE TABLE schema_name.table_name ( -- 
    id serial,
    s schema_name.type_name default 'Notconfirmed'::schema_name.type_name
);
Run Code Online (Sandbox Code Playgroud)