No. MySQL non supporta CREATE DOMAIN
o CREATE TYPE
come, per esempio, PostgreSQL does.
Probabilmente dovrai inserire di nuovo tutti i nomi. È possibile attenuare il lavoro necessario per eseguire questa operazione utilizzando la copia & incolla o gli script SQL.
È inoltre possibile utilizzare le tabelle INFORMATION_SCHEMA
per ottenere il testo della definizione ENUM e quindi interpolarlo in una nuova istruzione CREATE TABLE
.
È anche possibile utilizzare CREATE TABLE AS
in modi creativi per copiare una definizione di tipo. Ecco una dimostrazione:
CREATE TABLE foo (f ENUM('abc', 'xyz'));
CREATE TABLE bar AS SELECT f AS b FROM foo;
SHOW CREATE TABLE bar;
Uscite:
CREATE TABLE `bar` (
`b` enum('abc','xyz') default NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
Infine, suggerisco che se l'ENUM ha molti valori in esso (che sto cercando di indovinare è vero perché siete alla ricerca di una soluzione per evitare di scriverli), probabilmente dovresti usare una tabella di ricerca invece del tipo di dati ENUM.
fonte
2009-09-22 21:39:06