【问题标题】:Column is not the same data type as referencing column列与引用列的数据类型不同
【发布时间】:2018-01-12 07:09:03
【问题描述】:

我正在更改表以添加外键,如下所示:

ALTER TABLE [MS_Test].[dbo].[Studies]
   ADD CONSTRAINT F_Id
       FOREIGN KEY (Id) REFERENCES [M_Test].[dbo].[MS](Id);

我收到以下错误:

消息 1778,第 16 级,状态 0,第 2 行
列“MS_Test.dbo.FM.Id”与在外键“F_Id”中引用列“Studies.Id”的数据类型不同。

消息 1750,第 16 级,状态 0,第 2 行
无法创建约束或索引。查看以前的错误。

我的表中已经存储了很多数据,所以我不能只是删除表并重新创建它。

【问题讨论】:

  • 错误不是很清楚吗? Id 的数据类型必须与[M_Test].[dbo].[MS](Id) 的数据类型匹配。
  • 我不能只更改数据类型,因为它也是另一个表中的外键
  • 我不明白一个表的id如何引用另一个表的id
  • 所涉及的数据类型是什么
  • Studies 表的 PK 是唯一标识符。 MS 表的 Id 为 PK,它是一个 int,我需要在 Studies 表中添加“Id”列

标签: sql-server foreign-keys constraints alter-table


【解决方案1】:

SQL 有以下命令:

ALTER TABLE [table] ALTER COLUMN [column] SET DATA TYPE [new data type]

编辑

当您修改问题时,您似乎需要添加一个新列,而不是更改现有列。

试试这样的:

ALTER TABLE [MS_Test].[dbo].[Studies]
  ADD COLUMN MS_id {your [MS_Test].[dbo].[MS].Id column type};
ALTER TABLE [MS_Test].[dbo].[Studies]
  ADD CONSTRAINT F_Id
    FOREIGN KEY (MS_id) REFERENCES [M_Test].[dbo].[MS](Id);

【讨论】:

  • 这个问题是关于 SQL Server - 此代码不适用于 SQL Server / T-SQL
  • 当我写这个答案时,没有SQL-Server标签存在,只有SQL...
  • 但是我需要在表中添加一个新列是正确的
  • 您的[MS_Test].[dbo].[MS].Id 列是什么类型的?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多