一 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

SQL 删除外键列的更多相关文章

  1. 【转】PowerDesigner删除外键关系,而不删除外键列

    原文:https://blog.csdn.net/tomsyc/article/details/6075530 PowerDesigner中配置外键关系时,如果要删除配置的外键关系,默认设置会一同删除 ...

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

    PowerDesigner中配置外键关系时,如果要删除配置的外键关系,默认设置会一同删除外键列. 要更改此设置,需在菜单栏tools中打开Model Options,在Model Settings中点 ...

  3. PowerDesigner删除外键关系,而不删除外键列[转] 及编码格式

    PowerDesigner删除外键关系,而不删除外键列[转]  数据库 database  -> generate database ->format 设置为utf-8 PowerDesi ...

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

    1.添加删除主键和外键 例如: -----删除主键约束DECLARE @NAME SYSNAMEDECLARE @TB_NAME SYSNAMESET @TB_NAME = 'Date'SELECT ...

  5. 备忘:MySQL中修改表中某列的数据类型、删除外键约束

    -- MySQL中修改表中某列的数据类型 ALTER TABLE [COLUMN] 表名 MODIFY 列名 列定义; -- 删除外键约束 SHOW CREATE TABLE 表名; -- 复制CON ...

  6. sql语句添加删除外键及其约束

    --删除外键 ALTER TABLE t_base_role_module DROP CONSTRAINT fk_t_base_role_module_t_base_defined_url; --增加 ...

  7. 关于 Oracle外键列上是否需要索引问题?

    外键列上缺少索引会带来两个问题,限制并发性.影响性能.而这两个问题中的任意一个都可能会造成严重性能问题.   无论是Oracle的官方文档,还是在Tom的书中都说明了两种情况下可以忽略外键上的索引.其 ...

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

    在SQL Server中,实际上外键值可不可以为空(NULL),和外键关系是不是强制约束无关. 我们先在SQL Server数据库中建立两张表People和Car,一个People可以有多个Car,所 ...

  9. Entity Framework Code First添加修改及删除外键关联实体

    1.添加外键关联实体 1>.添加新的Province及City实体 using (var ctx = new PortalContext()) { var city1 = new City { ...

随机推荐

  1. 如何使用借助python完成 ARCGIS工具箱的调用

    上个月使用python调用arcgis工具箱完成了火点txt文件转shp文件的小功能, 感觉很不错, 写下这篇博客希望对大家有所帮助. 1.环境介绍: 系统: win8.1(64位) arcgis:d ...

  2. Spring基础系列-Spring事务不生效的问题与循环依赖问题

    原创作品,可以转载,但是请标注出处地址:https://www.cnblogs.com/V1haoge/p/9476550.html 一.提出问题 不知道你是否遇到过这样的情况,在ssm框架中开发we ...

  3. 03_SQL server数据类型

    SQL server数据类型 String类型: 数据类型: 描述 存储 char(n) 固定长度的字符串.最多 8,000 个字符.定义类型为char(5),那么就表示该类型可以存储5个字符,即使存 ...

  4. MySQL中间件之ProxySQL(12):禁止多路路由

    返回ProxySQL系列文章:http://www.cnblogs.com/f-ck-need-u/p/7586194.html 1.multiplexing multiplexing,作用是将语句分 ...

  5. Python系列:四、Python函数--技术流ken

    Python函数 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段. 函数能提高应用的模块性,和代码的重复利用率.你已经知道Python提供了许多内建函数,比如print().但你也可 ...

  6. struts2_项目运行报404

    1.缺少jar包,commons-lang3-3.2.jar 参考网址:https://blog.csdn.net/u013457382/article/details/50972401 2.stru ...

  7. 百度前端学院-基础学院-第20到21天之setTimeOut与setInterval

    setTimeout()可以使用clearTimeout()关闭 setInterval() 方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭. 注意:setInterv ...

  8. 使用typeof()或者typeof数据类型检测

    使用typeof()或者typeof进行基本数据类型检测(  typeof(X)等于typeof X  返回的是数据类型) 数据类型有:基本数据类型,字符串(string),布尔值(true/fals ...

  9. Git学习(一)

    版本控制系统是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统.版本控制系统不仅可以应用于软件源代码的文本文件,而且可以对任何类型的文件进行版本控制. 一.集中式版本控制系统 v.s ...

  10. Python 字符串拼接 sql ,造成 sql 注入例子

    简单的 userinfo 表 字符串拼接 sql import pymysql # 测试环境的数据库连接 conn = pymysql.connect(host='192.168.0.214', po ...