Используйте пользовательскую переменную в операторе Create Table для указания длины varchar - PullRequest
0 голосов
/ 24 марта 2019

Я хочу иметь возможность сделать что-то вроде этого:

SET @foo_width = 10;

CREATE TABLE test_table (
  foo varchar(@foo_width)
);

Точная проблема в том, что мне понадобится одна и та же ширина varchar для разных столбцов в разных таблицах. Итак, подумал, что было бы лучше, если бы он мог храниться в переменной.

Есть ли альтернатива?

1 Ответ

2 голосов
/ 24 марта 2019

Вы не можете сделать это напрямую, и MySQL не поддерживает определяемые пользователем типы.

В лучшем случае вы можете использовать ПОДГОТОВЛЕННОЕ ЗАЯВЛЕНИЕ , например, или создать свой запрос в приложении.

SET @foo_width = 10;

SELECT CONCAT("CREATE TABLE test_table (
  foo varchar(",@foo_width,")
);") INTO @myquery;

select @myquery; -- only for test

PREPARE stmt FROM @myquery;
EXECUTE stmt;
DEALLOCATE PREPARE stmt;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...