3

Я использую SQL Server 2008 R2. У меня есть 2 таблицы, содержащие данные.Изменить первичный ключ столбца и внешний ключ Тип данных VARCHAR в тип данных INT

  • Area таблица имеет VARCHAR первичный ключ

  • PersonalData таблица ссылается Area таблица с использованием VARCHAR внешнего ключа

Как я могу изменить varchar первичный ключ и внешний ключ int datatype?

SQL скрипт:

CREATE TABLE [dbo].[Z.Tests.Area] 
(
    [ID_Area] [varchar](50) NOT NULL, 
    [Description] [varchar](150) NULL, 

    CONSTRAINT [PK_Z.Tests.Area] 
     PRIMARY KEY CLUSTERED ([ID_Area] ASC) 
) ON [PRIMARY] 

CREATE TABLE [dbo].[Z.Tests.PersonalData] 
(
    [ID_PersonalData] [int] IDENTITY(1,1) NOT NULL, 
    [Username] [varchar](50) NULL, 
    [FK_ID_Area] [varchar](50) NULL, 

    CONSTRAINT [PK_Z.Tests.PersonalData] 
     PRIMARY KEY CLUSTERED ([ID_PersonalData] ASC) 
) ON [PRIMARY] 

ALTER TABLE [dbo].[Z.Tests.PersonalData] WITH CHECK 
    ADD CONSTRAINT [FK_Z.Tests.PersonalData_Z.Tests.Area] 
    FOREIGN KEY([FK_ID_Area]) 
     REFERENCES [dbo].[Z.Tests.Area] ([ID_Area]) 
GO 

ALTER TABLE [dbo].[Z.Tests.PersonalData] 
CHECK CONSTRAINT [FK_Z.Tests.PersonalData_Z.Tests.Area] 
GO 

ответ

2

Это многоэтапный процесс:

  1. Убедитесь, что данные чисты и конвертируемые в int
  2. Падение внешнего ключа и любых индексов на FK_ID_Area
  3. Исключить ограничение первичного ключа и любые индексы на ID_Area
  4. ALTER TABLE [Z.Tests.Area] ALTER COLUMN [ID_Area] int Not Null;
  5. ALTER TABLE [Z.Tests.PersonalData] ALTER COLUMN [FK_ID_Area] int Null;
  6. Recreate первичный ключ и индексы
  7. Recreate внешнего ключа и индексы

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

+0

Единственное, что я хотел бы добавить к этому, это сначала сделать эти шаги в тестовой среде. Таким образом, вы знаете, что он, скорее всего, будет работать на производстве. –

+0

*** Рассматривает ***: _ Начальный ключ, внешний ключ и уникальный ключ и индексы_ – Kiquenet

Смежные вопросы