将列更改为常规列而不是外键
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了将列更改为常规列而不是外键相关的知识,希望对你有一定的参考价值。
我有一个特定的情况,我的数据库中有一个列类型,其中列当前是int类型,它是一个允许空值的外键类型...
我的问题是:是否可以将此列简单地更改为不是外键的int类型而不会弄乱两个表中的数据,并保持值不变?
例如:
alter table xy
alter column ForeignKeyIdColumn int null
会这样的吗?
有人可以帮我吗?
答案
外键不是表的列的属性,它是定义表之间关系的数据库对象。
你可以使用ALTER TABLE
和DROP CONSTRAINT
删除外键约束(虽然我不推荐它),但你必须知道约束的名称才能这样做(这就是为什么在SQL SERVER中命名所有内容的最佳做法):
ALTER TABLE xy
DROP CONSTRAINT <constraint name here>;
但是,正如我所写,我不建议删除外键约束。 外键是强制引用完整性的数据库方式 - 这意味着在不更改或删除引用值的情况下,无法更改或删除另一个表引用的值。 删除外键意味着您的数据库将无法再强制执行引用完整性,这可能会导致数据损坏。
有关更多信息,请阅读Delete Foreign Key Relationships
以上是关于将列更改为常规列而不是外键的主要内容,如果未能解决你的问题,请参考以下文章