SQL 删除外键列

一 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

 

转载于:https://www.cnblogs.com/godbell/p/9688844.html

SQL Server中的外键(Foreign Key)是一种约束,用于维护表之间的关系。外键定义了两个表之间的引用关系,其中一个表的引用另一个表的主键外键可以确保数据的完整性和一致性。 具体来说,SQL Server中的外键具有以下特点: 1. 外键是在一个表中定义的,该表称为子表或引用表,而被引用的表称为父表或主表。子表中的外键与父表中的主键相关联。 2. 外键可以包含空值或参照的主键值。当插入或更新外键时,数据库会检查父表是否存在与之匹配的主键值。 3. 在插入非空值时,如果主键表中没有这个值,则无法插入。这可以确保子表中的外键始终引用有效的主键。 4. 在更新外键时,不能将其更改为父表中不存在的值。这样可以确保外键关系的一致性。 5. 在删除主表记录时,可以选择级联删除或拒绝删除与之相关的外键记录。级联删除将同时删除子表中与被删除主表记录相关联的外键记录,而拒绝删除将阻止删除具有相关外键的主表记录。 6. 在更新主表记录时,可以选择级联更新或拒绝执行。级联更新将同时更新子表中与被更新主表记录相关联的外键值,而拒绝执行将阻止更新具有相关外键的主表记录。 总之,SQL Server中的外键提供了一种强制性的约束,用于确保表之间的引用关系的完整性和一致性。通过使用外键,可以避免数据不一致或无效引用的情况发生。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值