`
gybmike
  • 浏览: 182708 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

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

阅读更多
在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



即可删除字段。

分享到:
评论

相关推荐

    SQLServer2000高级编程技术-已添加书签,想学存储过程、SQL编程务必要看,分析非常透彻

    目录如下: 第1章 简介 1.1 谁是本书的读者 1.2 本书的内容 1.3 需求 1.4 SQL Server 2000的新特性 1.4.1 改进了对Web的支持 1.4.2 改进了伸缩能力和...附录A SQL Server 2000中的T-SQL和XML数据类型 附录B 练习答案

    SQLServer2000高级编程技术(part02)-想学存储过程 SQL编程 务必要看

    第1章 简介 1.1 谁是本书的读者 1.2 本书的内容 1.3 需求 1.4 SQL Server 2000的新特性 1.4.1 改进了对Web的支持 1.4.2 改进了伸缩能力和可靠性 ...附录A SQL Server 2000中的T-SQL和XML数据类型 附录B 练习答案

    直销管理系统完整版(C#+MsSql)

    5. **InstallSql.sql**:这是一个SQL脚本文件,通常用于数据库的初始化和安装,包含创建数据库结构、插入初始数据、设置权限等内容。在这个直销系统中,此脚本可能用于建立直销相关的表和视图,以及设置数据库约束和...

    mysql数据库方面笔试面试题(带答案)

    - 支持事务:是MySQL默认的存储引擎,支持事务处理、行级锁定及外键约束。 - 自动恢复能力:即使系统故障也能保证数据的一致性和完整性。 - 应用场景: - **更新密集型表**:频繁更新数据的场景。 - **需要事务...

    计算机编程常用术语英语词汇汇总.doc

    51. **默认约束(DEFAULT Constraint)**:在数据库中,为字段提供默认值的设定。 52. **默认数据库(Default Database)**:连接时自动使用的数据库。 53. **默认实例(Default Instance)**:无需指定服务名即可...

    oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 连接字符串

    说明:编辑指定或缓冲区的sql脚本 用法:edit [文件名] 列子: 7. 运行脚本 (start/@) 说明:运行指定的sql脚本 用法:start/@ 文件名 列子: 8. 印刷屏幕 (spool) 说明:将sql*plus屏幕中的内容输出到指定的...

    MySql 5.1 参考手册.chm

    5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并创建...

    MySQL 5.1中文手冊

    5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并创建...

    Access+2000中文版高级编程

    13.6.4 从Access中删除Outlook中的联系人 423 13.6.5 从Access中创建Outlook日历条目 424 13.7 用DDE调用其他应用程序 425 13.7.1 理解Access中用到的DDE命令 426 13.7.2 用DDE执行复杂的Word示例 429 ...

    Access 2000中文版高级编程(part1)

    13.6.4 从Access中删除Outlook中的联系人 423 13.6.5 从Access中创建Outlook日历条目 424 13.7 用DDE调用其他应用程序 425 13.7.1 理解Access中用到的DDE命令 426 13.7.2 用DDE执行复杂的Word示例 429 13.8 小 ...

    mysql官方中文参考手册

    5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并创建...

    MYSQL中文手册

    5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并...

    MySQL5.1参考手册官方简体中文版

    5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并创建...

    MySQL 5.1参考手册中文版

    5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并创建...

    MySQL 5.1官方简体中文参考手册

    5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并创建...

    MySQL 5.1参考手册

    5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并创建...

    mysql5.1中文手册

    mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并...

    MySQL 5.1参考手册 (中文版)

    5.1.4. mysql.server:MySQL服务器启动脚本 5.1.5. mysqld_multi:管理多个MySQL服务器的程序 5.2. mysqlmanager:MySQL实例管理器 5.2.1. 用MySQL实例管理器启动MySQL服务器 5.2.2. 连接到MySQL实例管理器并创建...

Global site tag (gtag.js) - Google Analytics