web-dev-qa-db-fra.com

Création d'un type de variable ENUM dans MySQL

J'utilise un type de données ENUM dans MySQL et je voudrais le réutiliser, mais pas retaper dans les valeurs. Existe-t-il un équivalent à la façon C, C++ de définir les types dans MySQL?

Je voudrais faire ce qui suit:

DEFINE ETYPE ENUM('a','b','c','d');
CREATE TABLE Table_1 (item1 ETYPE, item2 ETYPE);

Est-ce possible?

Merci

26
jay

Non. MySQL ne prend pas en charge CREATE DOMAIN ou CREATE TYPE comme, par exemple, PostgreSQL does .

Vous devrez probablement saisir à nouveau tous les noms. Vous pouvez réduire le travail nécessaire pour ce faire en utilisant le copier-coller ou des scripts SQL.

Vous pouvez également utiliser le INFORMATION_SCHEMA tableaux pour obtenir le texte de la définition ENUM, puis interpoler cela dans un nouveau CREATE TABLE déclaration.

Vous pouvez aussi utiliser CREATE TABLE AS de manière créative pour copier une définition de type. Voici une démonstration:

CREATE TABLE foo ( f ENUM('abc', 'xyz') );
CREATE TABLE bar AS SELECT f AS b FROM foo;
SHOW CREATE TABLE bar;

Les sorties:

CREATE TABLE `bar` (
  `b` enum('abc','xyz') default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1

Enfin, je suggère que si votre ENUM contient de nombreuses valeurs (ce qui, je suppose, est vrai puisque vous cherchez une solution pour éviter de les taper), vous devriez probablement utiliser une table de recherche au lieu du type de données ENUM.

44
Bill Karwin