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

时间: 2024-08-30 10:44:54

SQL 删除外键列的相关文章

PowerDesigner删除外键关系,而不删除外键列[转]

PowerDesigner中配置外键关系时,如果要删除配置的外键关系,默认设置会一同删除外键列. 要更改此设置,需在菜单栏tools中打开Model Options,在Model Settings中点击Reference, 然后把"Auto-migrate columns"这个checkbox的勾去掉即可.

SQL Server 如何添加删除外键、主键,以及更新自增属性

1.添加删除主键和外键 例如: -----删除主键约束DECLARE @NAME SYSNAMEDECLARE @TB_NAME SYSNAMESET @TB_NAME = 'Date'SELECT TOP 1  @NAME=NAME FROM SYS.OBJECTS WITH(NOLOCK)WHERE TYPE_DESC ='PRIMARY_KEY_CONSTRAINT' AND PARENT_OBJECT_ID = (    SELECT OBJECT_ID    FROM SYS.OBJE

SQL Server 触发器例题: --次性删除course表数据,使用触发器替换删除操作,先删除外键表相关数据,再删除course。很难理解

create trigger Course_Delete on course instead of delete as declare @cno varchar(20) --定义变量 select @cno = cno from deleted --临时表里的信息是instead of 替换 delete要删除的信息 delete from score where cno = @cno --instead of 替换操作后执行的代码命令 delete from course where cno=

oracle 删除外键约束 禁用约束 启用约束

oracle 删除外键约束 禁用约束 启用约束 执行以下sql生成的语句即可 删除所有外键约束 Sql代码 select 'alter table '||table_name||' drop constraint '||constraint_name||';' from user_constraints where constraint_type='R' 禁用所有外键约束 Sql代码 select 'alter table '||table_name||' disable constraint

SQL Server外键关系是强制约束,外键值也可以是空(NULL)

在SQL Server中,实际上外键值可不可以为空(NULL),和外键关系是不是强制约束无关. 我们先在SQL Server数据库中建立两张表People和Car,一个People可以有多个Car,所以这两张表是一对多关系. People建表语句: CREATE TABLE [dbo].[People]( [ID] [int] NOT NULL, [Name] [nvarchar](50) NULL, [Age] [int] NULL, [Sex] [nvarchar](50) NULL, CO

循环删除外键约束

SQL删除,有外键约束常常不能删除,需要先删除外键 --/***********PowerBy:rovedog ***************/ --/第1步**********删除所有表的外键约束*************************/ DECLARE c1 CURSOR FOR SELECT 'alter table ['+ object_name(parent_obj) + '] drop constraint ['+name+']; ' FROM sysobjects WHE

检查外键列是否是索引列的两个语句

本文摘自<oracle 索引技术> 第37页和第38页 检查外键列是否是索引列的语句之一: select distinct a.owner  owner, a.constraint_name cons_name, a.table_name tab_name, b.column_name  cons_column, nvl(c.column_name,'***Check index***') ind_column from dba_constraints a,      dba_cons_col

oracle sql查询表外键关系

SELECT F.TABLE_NAME, F.CONSTRAINT_NAME, F.COLUMN_NAME, F.POSITION, P.TABLE_NAME, P.COLUMN_NAME, P.POSITION ,R.OWNER FROM USER_CONSTRAINTS R, USER_CONS_COLUMNS F, USER_CONS_COLUMNS P WHERE 1=1 and R.OWNER = UPPER('ATS001') AND R.TABLE_NAME = UPPER('AC

MySQL删除外键定义的方法

MySQL外键在定以后,如果我们不再需要这个外键,可以进行删除操作,下面就为您介绍MySQL删除外键定义的方法,供您参考. 不知道大家有没有发现,在定义外键的时候articles.member_id外键比articles.category_id子句多了一个CONSTRAINT fk_member ?这个fk_member就是用来实现MySQL删除外键用的,如下所示: mysql> ALTER TABLE articles DROP FOREIGN KEY fk_member; Query OK,