По моему опыту char
вызывает много проблем, а не только неожиданные пробелы во внешнем интерфейсе:
- Есть логические ошибки, когда сравнение не учитывает конечные пробелы.
- Когда вы спрашиваете
len()
: возвращает ли она длину строки, включая или исключая пробелы? char
занимает больше места на диске, чем необходимо.Поскольку первичный ключ включается в каждый индекс для своей таблицы, это может увеличивать до нетривиального объема пространства.
Так что, как правило, целесообразно выполнить рефакторинг с char
до * 1015.*.
В зависимости от количества имеющихся у вас таблиц, это может быть довольно много работы.Сначала вы должны удалить все противопоказания, которые ссылаются на столбцы.Тогда вы бы:
alter YourTable alter column YourColumn varchar(50) primary key
После этого вы бы снова добавили ограничения.Вы обнаружите, что требуется много попыток добавить / удалить ограничения в правильном порядке.Например, foreign key
требует ограничения unique
на указанный столбец.Таким образом, вам придется отбросить foreign key
до ограничения unique
.
Right click database -> Tasks -> Generate Scripts
предоставит вам множество операторов для воссоздания ограничений, если не всегда в правильном порядке.