Сохранение не нуль при изменении типа данных столбца в SQL Server - Java
Мне нужно изменить тип данных всех столбцов в базе данных, где тип данных char(255) на nvarchar(255). Для этого мне нужно удалить клавиши P/F, а затем заново создать их. Но при изменении типа данных я теряю не нулевую информацию.
Некоторые столбцы могут быть обнуляемыми, а некоторые нет. Это проблема.
Как я могу решить это?
РЕДАКТИРОВАТЬ:
Когда я опускаю клавиши P/F, я пытаюсь успешно изменить тип данных. И затем, при воссоздании ключей он говорит, что не может установить ключ в этом поле, потому что он может быть обнуляемым.
Затем я попытался сделать это с помощью try/catch:
попробуйте добавить ключ, и если нет, измените тип данных с ненулевым, и попробуйте снова добавить ключ.
Это работает, но теперь выбрасывает тонны некоторых исключений. Я думаю, что работа выполнена, но я не уверен, потому что моя БД имеет около 100 таблиц и не может проверить все из них, если они в порядке.
Так есть ли какой-то другой способ сделать это?
1 ответ
Вы можете использовать представление INFORMATION_SCHEMA.COLUMNS, чтобы найти все столбцы, имеющие тип char(255). Представление также содержит дополнительную информацию о столбце, например, к какой таблице он принадлежит и разрешено ли ему значение null.
Например...
select TABLE_NAME, COLUMN_NAME, IS_NULLABLE, DATA_TYPE, CHARACTER_MAXIMUM_LENGTH
from INFORMATION_SCHEMA.COLUMNS
Where DATA_TYPE = 'char'
And CHARACTER_MAXIMUM_LENGTH = 255
Вы можете использовать эту информацию, чтобы определить, какие столбцы нужно изменить, и вы знаете, разрешено ли это значение null.