web-dev-qa-db-ja.com

MySQLでENUM変数タイプを作成する

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

私は次のことをしたいと思います:

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

これは可能ですか?

ありがとう

26
jay

いいえ。MySQLはCREATE DOMAINまたはCREATE TYPEをサポートしません。たとえば、PostgreSQL does のように。

おそらくすべての名前を再度入力する必要があります。コピー&ペーストまたは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データ型の代わりにルックアップテーブルを使用する必要があります。

44
Bill Karwin