#mysql
#mysql
Вопрос:
В моем приложении есть таблица с переменной (25), мне нужно увеличить ее для старых и новых пользователей.
Для новых пользователей я могу просто обновить инструкцию CREATE. Для старых пользователей я мог бы выполнить «ALTER TABLE» при запуске приложения.
На данный момент я не могу знать, с какой версии обновляется пользователь, поэтому это приводит к моему вопросу: можно ли выполнять этот оператор alter при каждом запуске, даже если ничего не изменится, или я должен реализовать способ проверки предыдущей версии?
Комментарии:
1. У вас есть таблица для каждого пользователя?
2. @P.Salmon у каждого пользователя есть своя база данных.
3. Я предполагаю, что у вас есть исполняемый файл, который подключается к определенному пользователем серверу (например, локальному серверу, принадлежащему пользователю)? Например. пользователь получает новую версию вашего исполняемого файла, и этот исполняемый файл обновляет (локальный) сервер?
4. @Solarflare да.
Ответ №1:
Вы можете запускать ALTER TABLE
каждый раз. Если столбец уже был изменен ранее, ничего не происходит.
Кроме того, вы можете проверить длину столбца перед обновлением:
select CHARACTER_MAXIMUM_LENGTH
from INFORMATION_SCHEMA.COLUMNS
where TABLE_SCHEMA='db' and TABLE_NAME='table' and COLUMN_NAME='column'
Комментарии:
1. Я думал о проверке длины столбца, но не могу найти способ сделать это. Функция LENGTH() возвращает длину строки, а не максимальную длину столбца, верно?
2. Добавлен запрос на длину столбца. Как уже было сказано, команда
ALTER TABLE
-command ничего не делает, когда никаких изменений не требуется, поэтому проверка длины столбца действительно не приносит никаких дополнительных преимуществ.