Влияние на увеличение длины столбца существующей таблицы - PullRequest
1 голос
/ 07 августа 2009

Тип данных столбца в существующей таблице имеет тип Char (4). Есть ли влияние при выборе этой строки, если я увеличу длину столбца до 10.

Ответы [ 4 ]

1 голос
/ 07 августа 2009

Я полагаю, что при увеличении поля char добавляются дополнительные пробелы для заполнения тех, которые еще не заполнены, в некоторых базах данных, если не во всех.

Это может повлиять на некоторые программы, которые не ожидали такого поведения, и может вызвать некоторые проблемы с выводом, если лишние пробелы не обрезаются.

Я предполагаю, что функции, подобные подстроке (и те, которые зависят от длины строки), также могут быть затронуты, поскольку длина вашей строки теперь изменилась.

0 голосов
/ 08 августа 2009

"При выборе этой строки"

В этих случаях единственное воздействие, которое вы можете испытывать, - это неожиданное усечение. Я вспоминаю, как однажды спросил специалиста по DB2 в моей компании, что означает значение индикатора «-2». Он не знал.

Но если вы где-нибудь получили запрос, который включает «LENGTH (yourcolumnname)», и оказалось, что ваш код полагается на тот вызов LENGTH (), который никогда не возвращает что-то> 4, то, конечно, у вас проблемы.

0 голосов
/ 07 августа 2009

В вакууме не должно быть реального влияния расширения типа данных VARCHAR2 на столбце.

В отличие от CHAR, которые заполнены пробелами справа, больший размер VARCHAR2 заметно не изменит существующие записи.

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

Будьте осторожны, сделать столбец VARCHAR2 не так просто. Даже если ваши данные находятся в пределах новых ограничений, Oracle будет настаивать на том, чтобы столбец был пустым. Лучше всего экспортировать строки и перестроить таблицу или перемешать столбцы (создать новый столбец, перенести значения, удалить старый столбец).

0 голосов
/ 07 августа 2009

Почему не varchar2 (10)? Вы действительно используете всю строку для каждой записи?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...