Изменить тип данных столбца на uniqueidentifier из bigint - программирование
Подтвердить что ты не робот

Изменить тип данных столбца на uniqueidentifier из bigint

Я хочу изменить тип данных столбца в таблице на сервере sql. Я использовал следующую инструкцию:

ALTER TABLE dbo.tbltest  
ALTER COLUMN ID uniqueidentifier

Но он выдает ошибку

Столкновение типа операнда: bigint несовместим с uniqueidentifier

4b9b3361

Ответ 1

Вы не можете преобразовать целое число в uniqueidentifier. Но вы можете сделать это так.

  1. Сначала удалите старые данные из таблицы.

  2. Измените столбец на какой-нибудь текстовый формат (например, VARCHAR(200)).

    ALTER TABLE dbo.tbltest  
    ALTER COLUMN ID VARCHAR(200)
    
  3. Сейчас опять
    ALTER TABLE dbo.tbltest  
    ALTER COLUMN ID uniqueidentifier
    

Чтобы было ясно, вы не можете преобразовать столбец из числового в uniqueidentifier напрямую, но вы можете преобразовать numeric в varchar в uniqueidentifier.

Ответ 2

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

Ответ 3

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

Намного проще обновить сгенерированную модель (.edmx).

Да, Visual Studio позволяет вам обновлять тип данных без жалоб. Фактически, когда вы сохраняете файл .edmx, отношения будут проверяться; любые поля, которые вы, возможно, пропустили, будут отображаться как ошибки.

После того, как вы закончите, вы можете восстановить базу данных из модели. Бум, сделано.

Ответ 4

Если ответ Сингха не работает, вам, вероятно, придется отбросить таблицу и воссоздать ее.