Используйте пользовательскую переменную в инструкции Create Table для указания длины переменной

#mysql #sql

#mysql #sql

Вопрос:

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

 SET @foo_width = 10;

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

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

Есть ли какая-либо альтернатива?

Комментарии:

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

Ответ №1:

Вы не можете сделать это напрямую, а 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;