1

これは完全に不可能か、本当に簡単だと確信しています:

テーブルを作成していて、いずれかの列のオプションを制限したい場合、ENUM または SET 値型を使用しているようです。しかし、その時点で可能な値を定義する必要があります。主キー列とデータ列の 2 つの列を持つ別のテーブルがあり、新しいテーブルの ENUM を既存の列の主キーに設定したい場合はどうすればよいですか?

値を長文で書くことができると確信していますが、理想的には、新しい値をリストテーブルに入力し、列挙型列を持つテーブルが値の選択肢に新しいものが含まれることを受け入れることが必要ですそのリスト テーブルに追加されます。

リストに何かが追加されるたびに新しいテーブルの構造を操作する必要なく、これは可能ですか?

4

2 に答える 2

0

このリンクが役立つと思います: http://dev.mysql.com/doc/refman/5.0/en/enum.html

ユーザーコメント start でそれについて議論してください:

「MySQL 5.0 では、列挙型の値を動的に定義された値のテーブルに変換できます。これにより、この種の変換を処理するための言語に依存しない方法が効果的に提供されます (PHP、Tcl、C、C++、Java、など特定のコード)」

彼はストアドプロシージャでそれを行います

于 2009-06-14T07:06:42.907 に答える
0

最も簡単な方法は、制約のない通常の列を使用することです。現在のすべての値に関心がある場合は、DISTINCT を使用してクエリを実行します。

select distinct YourColumn from YourTable

そうすれば、メンテナンスは不要で、好きなものをテーブルに保存できます。

あなたが言及した外部キ​​ーテーブルも良い選択肢です。外部キーは元の列を制限します。実際の挿入を行う前に、クエリを実行して「enum」テーブルを展開します。

insert into EnumTable (name)
select 'NewEnumValue'
where not exists (select * from EnumTable where name = 'NewEnumValue')

何を達成しようとしているのか正確にはわかりません。列を制限しますが、誰かが制限を破ると自動的に選択肢を広げますか?

于 2009-06-14T07:18:51.130 に答える