当前位置:  开发笔记 > 数据库 > 正文

如何在SQL Server中删除外键?

如何解决《如何在SQLServer中删除外键?》经验,为你挑选了5个好方法。

我已经通过以下方式创建了一个外键(在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列需要做什么?

谢谢.



1> Mike..:

尝试

alter table company drop constraint Company_CountryID_FK


alter table company drop column CountryID



2> Jared..:

这将有效:

ALTER TABLE [dbo].[company] DROP CONSTRAINT [Company_CountryID_FK]



3> 小智..:

我想这会对你有所帮助......

DECLARE @ConstraintName nvarchar(200)
SELECT 
    @ConstraintName = KCU.CONSTRAINT_NAME
FROM INFORMATION_SCHEMA.REFERENTIAL_CONSTRAINTS AS RC 
INNER JOIN INFORMATION_SCHEMA.KEY_COLUMN_USAGE AS KCU
    ON KCU.CONSTRAINT_CATALOG = RC.CONSTRAINT_CATALOG  
    AND KCU.CONSTRAINT_SCHEMA = RC.CONSTRAINT_SCHEMA 
    AND KCU.CONSTRAINT_NAME = RC.CONSTRAINT_NAME
WHERE
    KCU.TABLE_NAME = 'TABLE_NAME' AND
    KCU.COLUMN_NAME = 'TABLE_COLUMN_NAME'
IF @ConstraintName IS NOT NULL EXEC('alter table TABLE_NAME drop  CONSTRAINT ' + @ConstraintName)

它将根据特定的表和列删除外键约束.


谢谢萨米尔。概括性强。

4> 小智..:

首先检查约束是否存在然后丢弃它.

if exists (select 1 from sys.objects where name = 'Company_CountryID_FK' and type='F')
begin
alter table company drop constraint  Company_CountryID_FK
end



5> boes..:
alter table company drop constraint Company_CountryID_FK

推荐阅读
爱唱歌的郭少文_
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有