Сохранение не нуль при изменении типа данных столбца в 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.

Другие вопросы по тегам