2009-09-22 9 views
20

MySQLでENUMデータ型を使用していますが、値を再入力する必要はありません。 MySQLで型を定義するC、C++の方法と同等のものがありますか?MySQLでENUM変数型を作成する

私は、次の操作を行いたいと思います:

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

これは可能ですか?

おかげ

答えて

32

号MySQLは、例えば、PostgreSQLのdoesCREATE DOMAIN又はCREATE TYPEなどをサポートしていません。

おそらくすべての名前を再度入力する必要があります。コピー&貼り付け、またはSQLスクリプトを使用して、これを行うために必要な作業を軽減できます。

INFORMATION_SCHEMAテーブルを使用してENUM定義のテキストを取得し、それを新しいCREATE TABLEステートメントに挿入することもできます。

CREATE TABLE ASをクリエイティブな方法で使用して、タイプ定義をコピーすることもできます。ここではデモンストレーションです:

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

出力:

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

最後に、私はあなたのENUMは、私は推測しているた(これに多くの値を持っている場合は、解決策を探しているので、真実であることを示唆していますそれらを入力しないでください)、ENUMデータタイプの代わりにルックアップテーブルを使用しているはずです。

関連する問題