Изменить тип данных столбца на uniqueidentifier из bigint
Я хочу изменить тип данных столбца в таблице на сервере sql. Я использовал следующую инструкцию:
ALTER TABLE dbo.tbltest
ALTER COLUMN ID uniqueidentifier
Но он выдает ошибку
Столкновение типа операнда: bigint несовместим с uniqueidentifier
Ответы
Ответ 1
Вы не можете преобразовать целое число в uniqueidentifier
. Но вы можете сделать это так.
Сначала удалите старые данные из таблицы.
Измените столбец на какой-нибудь текстовый формат (например, VARCHAR(200)
).
ALTER TABLE dbo.tbltest
ALTER COLUMN ID VARCHAR(200)
- Сейчас опять
ALTER TABLE dbo.tbltest
ALTER COLUMN ID uniqueidentifier
Чтобы было ясно, вы не можете преобразовать столбец из числового в uniqueidentifier
напрямую, но вы можете преобразовать numeric
в varchar
в uniqueidentifier
.
Ответ 2
Сначала нужно добавить столбец (возможно, по умолчанию или с нулевым значением, чтобы столбец был успешно добавлен в строки с существующими данными), обновите его до нужных вам значений или измените любые ключи (если это первичный ключ изменит его на новый столбец, а затем также изменит любые внешние ключи в этой таблице), затем удалите старый столбец и, при необходимости, измените новый столбец (например, установив семя идентификаторов, удалив обнуление и т.д.).
Ответ 3
Примечание для людей, использующих Entity Framework:
Очевидно, что если у вас есть большая база данных со сложными отношениями, удаление всех связей и столбцов идентификаторов, а повторное добавление их - огромное испытание.
Намного проще обновить сгенерированную модель (.edmx).
Да, Visual Studio позволяет вам обновлять тип данных без жалоб. Фактически, когда вы сохраняете файл .edmx, отношения будут проверяться; любые поля, которые вы, возможно, пропустили, будут отображаться как ошибки.
После того, как вы закончите, вы можете восстановить базу данных из модели. Бум, сделано.
Ответ 4
Если ответ Сингха не работает, вам, вероятно, придется отбросить таблицу и воссоздать ее.