将列更改为常规列而不是外键

时间:2018-03-05 12:12:33

标签: sql sql-server tsql foreign-keys

我有一个特定的情况,我的数据库中有一个列类型,其中列当前是int类型,它是一个允许空值的外键类型...

我的问题是:是否可以将此列简单地更改为一个int类型,它不是外键而不会弄乱两个表中的数据,并保持值不变?

例如:

alter table xy
alter column ForeignKeyIdColumn int null

这样的事情会起作用吗?

有人能帮助我吗?

1 个答案:

答案 0 :(得分:1)

外键不是表的列的属性,它是定义表之间关系的数据库对象。

你可以使用带有ALTER TABLE的{​​{1}}来删除外键约束(虽然我不推荐它),但是你必须知道要做的约束的名称(这就是它的原因)在SQL SERVER中命名所有内容的最佳实践):

DROP CONSTRAINT

但是,正如我所写,我不建议删除外键约束。
外键是强制引用完整性的数据库方式 - 这意味着在不更改或删除引用值的情况下,无法更改或删除另一个表引用的值。
删除外键意味着您的数据库将无法再强制执行引用完整性,并且可能导致数据损坏。

有关详情,请参阅Delete Foreign Key Relationships