Столбец перечисления MySQL из другого столбца - PullRequest
1 голос
/ 14 июня 2009

Я уверен, что это либо абсолютно невозможно, либо действительно просто:

Если я создаю таблицу и хочу, чтобы у одного из столбцов были ограниченные параметры, кажется, что я использую тип значения ENUM или SET. Но я должен определить возможные значения в тот момент. Что если у меня есть другая таблица с двумя столбцами, столбцом первичного ключа и столбцом данных, и я хочу, чтобы ENUM для моей новой таблицы был установлен в первичный ключ уже существующего столбца?

Я уверен, что я могу просто записать значения в длинные позиции, но в идеале мне нужно, чтобы новые значения вводились в таблицу списка и чтобы таблица со столбцом enum просто принимала, что выбор значений включить что-нибудь новое, добавленное в эту таблицу списка.

Возможно ли это без необходимости манипулировать структурой новой таблицы каждый раз, когда что-то добавляется в список?

Ответы [ 2 ]

0 голосов
/ 14 июня 2009

Самый простой способ - использовать обычный столбец без ограничений. Если вас интересуют все текущие значения, используйте DISTINCT, чтобы запросить их:

select distinct YourColumn from YourTable

Таким образом, у вас нет обслуживания, и вы можете хранить в таблице все, что захотите.

Таблица внешнего ключа, которую вы упоминаете, также является хорошим вариантом. Внешний ключ будет ограничивать исходный столбец. Перед фактической вставкой вы запускаете запрос, чтобы развернуть таблицу enum:

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

Не уверен, что именно вы пытаетесь достичь, кстати; ограничить столбец, но автоматически расширить выбор, когда кто-то нарушает предел?

0 голосов
/ 14 июня 2009

Я думаю, что эта ссылка поможет: http://dev.mysql.com/doc/refman/5.0/en/enum.html

обсудить это в комментариях пользователя начало:

"В MySQL 5.0 вы можете преобразовать значения перечисления в динамически определяемую таблицу значений, которая затем предоставляет эффективный не зависящий от языка метод для обработки этого вида преобразования (вместо того, чтобы полагаться на PHP, Tcl, C, C ++ , Java и т. Д. Конкретный код). «

он делает это с сохраненной процедурой

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...