首页 > 数据库 > SQL Server > 正文
SQL批量删除数据表中指定字段对应的所有约束
2013-01-15       个评论    来源:xqf222的专栏  
收藏    我要投稿
SQL批量删除数据表中指定字段对应的所有约束
 
--定义要操作的数据表名变量
declare @TableName  nvarchar(250)
set @TableName='数据表名'
--定义要操作的字段名变量
declare @ColumnName  nvarchar(250)
set @ColumnName='字段名'
--定义当前查询的约束变量
declare @ConstraintName varchar (250)
  www.2cto.com  
--声明读取数据表中指定字段对应的所有约束列表游标
declare mycursor cursor for select name from sysobjects left join sysconstraints on sysconstraints.constid=sysobjects.id where parent_obj=OBJECT_ID(''+@TableName+'') and colid=(select colid from syscolumns where id=OBJECT_ID(''+@TableName+'') and OBJECTPROPERTY(id, N'IsUserTable') = 1 and upper(name)=upper(@ColumnName))
--打开游标
open mycursor 
--从游标里取出数据赋值到主键约束名称变量中  www.2cto.com  
fetch next from mycursor into @ConstraintName 
--如果游标执行成功  
while (@@fetch_status=0) 
begin 
--删除当前找到的约束
--print '当前删除语句'+'ALTER TABLE ['+@TableName+'] DROP CONSTRAINT ['+@ConstraintName+']'
exec ('ALTER TABLE ['+@TableName+'] DROP CONSTRAINT ['+@ConstraintName+']') 
print '已成功删除数据表['+@TableName+']字段['+@ColumnName+']对应的约束['+@ConstraintName+']'
--用游标去取下一条记录
fetch next from mycursor into @ConstraintName
end 
--关闭游标
close mycursor  
--撤销游标
deallocate mycursor
 
--以上程序已测试:测试环境Windows2003+SQL2008 SERVER R2
 
点击复制链接 与好友分享!回本站首页
相关TAG标签 数据表 字段 中指
上一篇:Sql Server 编译、重编译与执行计划重用原理
下一篇:SQL批量添加主键脚本
相关文章
图文推荐
文章
推荐
点击排行

关于我们 | 联系我们 | 广告服务 | 投资合作 | 版权申明 | 在线帮助 | 网站地图 | 作品发布 | Vip技术培训
版权所有: 红黑联盟--致力于做实用的IT技术学习网站