web-dev-qa-db-fra.com

Comment créer un champ enum avec une valeur par défaut?

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

  CREATE TYPE attendance AS ENUM types;

La requête ci-dessus crée une assistance de type énumération avec les étiquettes énumérées dans les types. Comment créer un type avec étiquette par défaut? Dans ce cas, je souhaite créer un type de présence avec la valeur par défaut Notconfirmed.

13
RaviKiran

J'essayais la même chose que vous et j'ai eu la réponse dans stackoverflow uniquement. Il est possible de créer ENUM avec une valeur par défaut. Voici ce que j'ai pour vous.

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 *; 

Cela a fonctionné pour moi comme un charme.

40
Sudarshan Kalebere

En plus des mots de Sudarshan ...

Si quelqu'un a besoin d'un exemple dans un schéma différent:

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

Je ne suis pas sûr de savoir pourquoi nous devons avoir la requête ci-dessous dans notre tableau. J'ai essayé sans cette ligne fonctionne toujours.

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