我有一个特定的情况,我的数据库中有一个列类型,其中列当前是int类型,它是一个允许空值的外键类型...
我的问题是:是否可以将此列简单地更改为一个int类型,它不是外键而不会弄乱两个表中的数据,并保持值不变?
例如:
alter table xy
alter column ForeignKeyIdColumn int null
这样的事情会起作用吗?
有人能帮助我吗?
答案 0 :(得分:1)
外键不是表的列的属性,它是定义表之间关系的数据库对象。
你可以使用带有ALTER TABLE
的{{1}}来删除外键约束(虽然我不推荐它),但是你必须知道要做的约束的名称(这就是它的原因)在SQL SERVER中命名所有内容的最佳实践):
DROP CONSTRAINT
但是,正如我所写,我不建议删除外键约束。
外键是强制引用完整性的数据库方式 - 这意味着在不更改或删除引用值的情况下,无法更改或删除另一个表引用的值。
删除外键意味着您的数据库将无法再强制执行引用完整性,并且可能导致数据损坏。
有关详情,请参阅Delete Foreign Key Relationships