【发布时间】:2008-09-18 14:50:36
【问题描述】:
我通过以下方式创建了一个外键(在 SQL Server 中):
alter table company add CountryID varchar(3);
alter table company add constraint Company_CountryID_FK foreign key(CountryID)
references Country;
然后我运行这个查询:
alter table company drop column CountryID;
我得到这个错误:
消息 5074,第 16 级,状态 4,第 2 行
对象“Company_CountryID_FK”依赖于列“CountryID”。
消息 4922,第 16 级,状态 9,第 2 行
ALTER TABLE DROP COLUMN CountryID 失败,因为一个或多个对象访问此列
我试过了,但它似乎不起作用:
alter table company drop foreign key Company_CountryID_FK;
alter table company drop column CountryID;
我需要做什么才能删除CountryID 列?
谢谢。
【问题讨论】:
-
尝试删除外键时遇到什么错误?
-
请注意,在不知道为什么存在的情况下删除外键约束是很危险的。如果您刚刚创建并错误地执行了此操作,请使用其他答案中提供的代码。如果不是,那么不要放弃约束,直到你确定这样做不会破坏其他东西。创建约束是为了强制执行业务规则,最好在删除它们之前确定它们不再需要。
-
删除 FK 的语法不需要“外键”字样。这是 MySQL 的语法,而不是 SQL Server。您可以将其替换为“约束”一词。
标签: sql-server tsql