我使用的是SQL Server 2008 R2。 我有2个包含数据的表。
Area
表格有 varchar 主键
PersonalData
表引用Area
表
如何将varchar
主键和外键更改为int
数据类型?
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
答案 0 :(得分:2)
这是一个多步骤的过程:
int
FK_ID_Area
ID_Area
ALTER TABLE [Z.Tests.Area] ALTER COLUMN [ID_Area] int Not Null;
ALTER TABLE [Z.Tests.PersonalData] ALTER COLUMN [FK_ID_Area] int Null;
你肯定要在这里小心,因为有可能阻止它工作的其他东西(模式绑定视图,检查约束等)。