关于tsql:如何在SQL Server中删除外键?

关于tsql:如何在SQL Server中删除外键?

How do I drop a foreign key in SQL Server?

我通过以下方式创建了外键(在SQL Server中):

1
2
3
alter table company add CountryID varchar(3);
alter table company add constraint Company_CountryID_FK foreign key(CountryID)
references Country;

然后,我运行以下查询:

1
alter table company drop column CountryID;

我得到这个错误:

Msg 5074, Level 16, State 4, Line 2
The object 'Company_CountryID_FK' is dependent on column 'CountryID'.
Msg 4922, Level 16, State 9, Line 2
ALTER TABLE DROP COLUMN CountryID failed because one or more objects access this column

我已经尝试过了,但是似乎没有用:

1
2
alter table company drop foreign key Company_CountryID_FK;
alter table company drop column CountryID;

我需要怎么做来删除CountryID列?

谢谢。


尝试

1
2
3
4
alter table company drop constraint Company_CountryID_FK


alter table company drop column CountryID

这将起作用:

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


我认为这对您有帮助...

1
2
3
4
5
6
7
8
9
10
11
12
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)

它将基于特定的表和列删除外键约束。


首先检查约束的存在,然后将其删除。

1
2
3
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

1
alter table company drop constraint Company_CountryID_FK

我不知道MSSQL,但不是:

1
alter table company drop **constraint** Company_CountryID_FK;


您是否要删除FK约束或列本身?

删除约束:

1
alter table company drop constraint Company_CountryID_FK

在删除约束之前,您将无法删除该列。


您也可以右键单击表,选择"修改",然后转到属性,右键单击它,然后选择"删除主键"。


推荐阅读

    linux命令删除用户组?

    linux命令删除用户组?,管理,密码,系统,用户组,用户,概念,命令,文件,管理员,

    linux中用户创建命令?

    linux中用户创建命令?,密码,系统,用户,软件,命令,联系方式,管理,信息,用户

    linux删除重复项命令?

    linux删除重复项命令?,数据,系统,工具,电脑,项目,公式,百度,代码,名字,基础,

    linux硬链接删除命令?

    linux硬链接删除命令?,数据,系统,不了,时间,名称,链接,文件,档案,地方,设备,l

    linux交互删除命令?

    linux交互删除命令?,名称,不了,系统,文件夹,命令,通用,文件,目录,指令,方法,l

    linux命令行创建用户?

    linux命令行创建用户?,系统,密码,软件,新增,用户,联系方式,管理,用户名,命

    linux删除无用的命令?

    linux删除无用的命令?,系统,软件,数据,员工,命令,信息,宽松,对比,状态,公司,L

    删除文件linux命令行?

    删除文件linux命令行?,命令,文件,不了,档案,名称,系统,数据,目录,文件夹,终

    linux命令行删除网卡?

    linux命令行删除网卡?,地址,网络,系统,工具,信息,设备,名字,管理,服务,网卡,l

    linux命令删除字符串?

    linux命令删除字符串?,软件,系统,代码,名称,通用,连续,字符,字符串,命令,空

    linux删除整个命令?

    linux删除整个命令?,命令,文件夹,不了,名称,通用,系统,数据,文件,目录,格式,l

    linux管道创建命令?

    linux管道创建命令?,通信,标准,信息,地方,管道,命令,环境,流向,通用,工具,Lin

    linux创建分区命令是?

    linux创建分区命令是?,系统,工具,分区,电脑,情况,位置,网络,信息,数据,环境,

    linux如何命令删除?

    linux如何命令删除?,档案,系统,命令,文件,目录,通用,文件夹,终端,选项,参数,l

    linux创建pc端命令?

    linux创建pc端命令?,名字,系统,密码,名称,图片,环境,软件,首次,文件夹,命令,L

    linux命令行创建组?

    linux命令行创建组?,系统,代码,密码,软件,用户组,用户,命令,选项,用户名,文

    linux创建密码命令?

    linux创建密码命令?,密码,系统,地址,联系方式,软件,用户,用户名,位置,管理,

    删除路由命令linux?

    删除路由命令linux?,系统,信息,网络,地址,管理,环境,路由,命令,工作,基础,WIN

    linux命令删除当前行?

    linux命令删除当前行?,系统,位置,命令,文件夹,文件,标的,数据,环境,通用,不

    linux删除jog命令?

    linux删除jog命令?,工具,软件,连续,机器人,位置,中心,工作,平稳,人员,自动化