Можно ли выполнить «ALTER TABLE … ИЗМЕНИТЬ», ничего не меняя?

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