#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;