阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

SQL 删除外键列

120次阅读
没有评论

共计 916 个字符,预计需要花费 3 分钟才能阅读完成。

一、SQL 删除列的语句是:

alter table tableName drop column columnName  –(其中,tableName 为表名,columnName 为列名)

但是,如果某列有约束时,不能直接删除,需要先删除约束,再删除列。如果某个列是外键,在不知道外键约束名称的情况下,那么首先是查找外键约束名称,根据名称删除约束,然后再删除列。

二、如何查找外键约束

DECLARE @TableName NVARCHAR(64) = ”
DECLARE @ColumnName  NVARCHAR(32) = ”SELECT c.name FROM sysconstraints a
inner join syscolumns b on a.colid=b.colid
inner join sysobjects c on a.constid=c.id
where a.id=object_id(@TableName)
and b.name=@ColumnName

上述代码在使用的时候需要给 @TableName 赋值实际的表名,@ColumnName 为实际的列名。

三、知道了约束名就可以删除约束了

ALTER TABLE @TableName DROP CONSTRAINT @CONSTRAINT_NAME

四、将上面的代码合并,于是有下面的代码

DECLARE @TableName NVARCHAR(64) = ”
DECLARE @ColumnName  NVARCHAR(32) = ”
DECLARE @CONSTRAINT_Key SYSNAME
SELECT @CONSTRAINT_Key = c.name FROM sysconstraints a
inner join syscolumns b on a.colid=b.colid
inner join sysobjects c on a.constid=c.id
where a.id=object_id(@TableName)
and b.name=@ColumnName
DECLARE @Sql NVARCHAR(512) = N’ALTER TABLE ‘ + @TableName + ‘ DROP CONSTRAINT ‘ + @CONSTRAINT_Key
EXECUTE sys.sp_executesql @Sql

正文完
星哥说事-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-22发表,共计916字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中