文档章节

sql server 中删除默认约束的通用sql脚本(轉)

顺其自然001
 顺其自然001
发布于 2014/03/04 14:22
字数 265
阅读 30
收藏 0
在SQL Server 中,如果给表的一个字段设置了默认值,就会在系统表sysobjects中生成一个默认约束。
如果想删除这个设置了默认值的字段(假设此字段名column1),执行“ALTER TABLE table1 DROP COLUMN column1”时就会报错:

The object 'DF__xxxxxxxxxxx' is dependent on column 'column1'. 
ALTER TABLE DROP COLUMN column1failed because one or more objects access this column.




所以在删除此字段时需要先将系统表中的对应默认约束删除, 可以使用下面的脚本进行删除:

-- this script drops the default constraint which is generated by the setting of default value.
DECLARE @tablename VARCHAR(100), @columnname VARCHAR(100), @tab VARCHAR(100)
SET @tablename='CountryGroupEmailAndWaitAux'
SET @columnname='actionOfHasNoValidEmail'
declare @defname varchar(100)
declare @cmd varchar(100)
select @defname = name FROM sysobjects so 
inner JOIN sysconstraints sc ON so.id = sc.constid
WHERE object_name(so.parent_obj) = @tablename 
AND so.xtype = 'D'
AND sc.colid =(SELECT colid FROM syscolumns
WHERE id = object_id(@tablename) AND name = @columnname)
set @cmd='alter table '+ @tablename+ ' drop constraint '+ @defname
if @cmd is null print 'No default constraint to drop'
exec (@cmd)



在删除对应的默认约束后,执行:

ALTER TABLE table1 DROP COLUMN column1



即可删除字段。

© 著作权归作者所有

顺其自然001

顺其自然001

粉丝 18
博文 37
码字总数 13528
作品 0
卢湾
高级程序员
私信 提问
SQL Server教程

SQL Server是什么? 它是一个软件,由Microsoft从RDBMS指定实现开发; 它也是一个ORDBMS; 它依赖于平台(运行在Windows系统平台上); 它是基于GUI和命令的软件; 它支持SQL(SEQUEL)语言的...

易百教程
2016/08/24
57
0
SQL sever 中系统表sys.objects的作用与字段含义

0 定义 官方对sys.objects的定义:在数据库中创建的每个用户定义的架构作用域内的对象在该表中均对应一行。 这种翻译,真心的无力吐槽。我们用中文再翻译下这句中文:你在库中创建一张表,这...

熊二熊
2016/04/14
150
0
SQL SERVER 2008升级到SP4后,服务无法启动

为了提高SQL性能和安全性,2号给客户升级SQL 2008 SP4补丁,升级过程中一切顺利。但重启服务器后,发现SQL服务无法启动,事件日志引出此错误: 由于升级步骤'sqlagent100msdbupgrade.sql'遇到...

sfih
2016/06/14
0
0
SQL Server 2017 AlwaysOn AG 自动初始化(十四)

功能性测试 测试自动种子设定对SQL Server 2017数据文件磁盘布局要求的变化 由于生产环境存放数据文件可能位于不同的卷上,且实例名也不同,那么数据文件的完整路径就不同。为了能实现自动种...

UltraSQL
2018/06/14
0
0
RDBMS-mysql初步

rdbms: 1、数据库的建立删除 2、表单的创建、删除、修改 3、索引的创建和删除 4、用户和权限 5、数据的增删改 6、查询 DML:数据操作语言 INSERT REPLACE DELETE UPDATE DDL:数据定义语言 ...

jyxcto
2017/05/29
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Less导入选项

Less 提供了CSS @import CSS规则的几个扩展,以提供更多的灵活性来处理外部文件。 语法: @import (keyword) "filename"; 以下是导入指令的相关详情: reference,使用较少的文件但不输出。 ...

凌兮洛
2分钟前
0
0
Docker下实现MySQL主从(读、写分离)同步配置

docker下实现两个(或多个)mysql容器的主、从数据库同步配置,首先要明白docker容器的相互通信关系,默认是使用的bridge模式: 也就是说,通过docker run命令创建docker容器是每个容器都有自己...

源哥L
12分钟前
3
0
一起来学Java8(三)——方法引用

在一起来学Java8(一)——函数式编程中有一个简单的函数式编程的例子: import java.util.function.Consumer;class Person { public static void sayHello(String name) { S...

猿敲月下码
31分钟前
15
0
读书笔记:深入理解ES6(十一)

第十一章 Promise与异步编程   Promise可以实现其他语言中类似Future和Deferred一样的功能,是另一种异步编程的选择,它既可以像事件和回调函数一样指定稍后执行的代码,也可以明确指示代码...

张森ZS
54分钟前
20
0
面试官,Java8 JVM内存结构变了,永久代到元空间

在文章《JVM之内存结构详解》中我们描述了Java7以前的JVM内存结构,但在Java8和以后版本中JVM的内存结构慢慢发生了变化。作为面试官如果你还不知道,那么面试过程中是不是有些露怯?作为面试...

程序新视界
今天
29
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部