Подтвердить что ты не робот

Создание типа переменной ENUM в MySQL

Я использую тип данных ENUM в MySQL и хотел бы его повторно использовать, но не повторять в значениях. Существует ли эквивалент C, С++ для определения типов в MySQL?

Я хотел бы сделать следующее:

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

Возможно ли это?

Спасибо

4b9b3361

Ответ 1

Нет. MySQL не поддерживает CREATE DOMAIN или CREATE TYPE, как, например, PostgreSQL делает.

Вам, вероятно, придется снова ввести все имена. Вы можете смягчить работу, необходимую для этого, с помощью копирования и вставки или 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 тип данных.