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
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.