MySQLでENUMデータ型を使用しています。再使用したいのですが、値を再入力したくありません。 MySQLで型を定義するC、C++の方法と同等のものはありますか?
私は次のことをしたいと思います:
DEFINE ETYPE ENUM('a','b','c','d');
CREATE TABLE Table_1 (item1 ETYPE, item2 ETYPE);
これは可能ですか?
ありがとう
いいえ。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データ型の代わりにルックアップテーブルを使用する必要があります。