gpt4 book ai didi

sql-server - 将列主键和外键 VARCHAR 数据类型更改为 INT 数据类型

转载 作者:行者123 更新时间:2023-12-02 01:19:47 25 4
gpt4 key购买 nike

我使用 SQL Server 2008 R2。我有 2 个包含数据的表。

  • Area表有varchar主键

  • PersonalData 表使用 varchar 外键引用 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

最佳答案

这是一个多步骤的过程:

  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. 重新创建主键和索引
  7. 重新创建外键和索引

在这里您肯定要小心,因为可能还有其他事情可能会阻止它工作(架构绑定(bind) View 、检查约束等)。

关于sql-server - 将列主键和外键 VARCHAR 数据类型更改为 INT 数据类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40736032/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com