【问题标题】:Change column to foreign key将列更改为外键
【发布时间】:2015-06-29 15:15:10
【问题描述】:

如何将现有列从 bit 更改为外键 (int)?

例如,列NEW_B 是这样创建的:

ALTER TABLE [dbo].[APPLICATION]
ADD [NEW_B] [bit] NULL
GO

但现在我希望NEW_B 引用表ATTACHMENT 的列ID (int)(想保留名称NEW_B,也允许NULLs)。

【问题讨论】:

  • 先alter table,设置列类型为int,再添加外键约束。

标签: sql sql-server


【解决方案1】:

语法如下:

--alter existing column to int
ALTER TABLE [dbo].[APPLICATION] ALTER COLUMN [NEW_B] INT NULL
GO

--add foreign key constraint
ALTER TABLE [dbo].[APPLICATION] WITH CHECK ADD CONSTRAINT [FK_APPLICATION_ATTACHMENT] FOREIGN KEY([NEW_B])
REFERENCES [dbo].[ATTACHMENT] ([ID])
GO

ALTER TABLE [dbo].[APPLICATION] CHECK CONSTRAINT [FK_APPLICATION_ATTACHMENT]
GO

【讨论】:

  • 谢谢,能否请您解释一下WITH CHECK 在做什么(我猜您不能引用不存在的ID?)以及为什么需要第三条语句(... CHECK CONSTRAINT ...)?跨度>
  • 您可以跳过最后一次检查。它由ssms 生成。例如,您可以在此处阅读此内容stackoverflow.com/questions/529941/…
  • 找到答案here。在我的特殊情况下,我将使用WITH NOCHECK
猜你喜欢
  • 2012-02-19
  • 1970-01-01
  • 1970-01-01
  • 2020-06-10
  • 1970-01-01
  • 2014-01-17
  • 2019-10-28
  • 2021-11-12
  • 2018-09-02
相关资源
最近更新 更多