SQL批量删除数据表中指定字段对应的所有约束
2013-01-14 17:18
465 查看
--SQL批量删除数据表中指定字段对应的所有约束
--定义要操作的数据表名变量
declare @TableName nvarchar(250)
set @TableName='数据表名'
--定义要操作的字段名变量
declare @ColumnName nvarchar(250)
set @ColumnName='字段名'
--定义当前查询的约束变量
declare @ConstraintName varchar (250)
--声明读取数据表中指定字段对应的所有约束列表游标
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
--从游标里取出数据赋值到主键约束名称变量中
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
--定义要操作的数据表名变量
declare @TableName nvarchar(250)
set @TableName='数据表名'
--定义要操作的字段名变量
declare @ColumnName nvarchar(250)
set @ColumnName='字段名'
--定义当前查询的约束变量
declare @ConstraintName varchar (250)
--声明读取数据表中指定字段对应的所有约束列表游标
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
--从游标里取出数据赋值到主键约束名称变量中
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
相关文章推荐
- SQL批量删除数据表中指定字段对应的所有约束
- SQL批量删除数据表中指定字段对应的所有约束
- SQL批量删除指定数据表中的所有字段说明属性
- SQL批量删除指定数据表中的所有字段说明属性
- SQL批量删除指定数据表中的所有字段说明属性
- Oracle中使用游标获取指定数据表的所有字段名对应的字符串
- SQL存储过程之删除指定表中指定字段所有约束
- 利用shell删除数据表中指定信息和字段对应的文件
- sql中删除冗余数据和一个叫department的表,里面只有一个字段name,一共有4条纪录,分别是a,b,c,d,对应四个球对,现在对列出所有组合等sql面试题
- 利用shell删除数据表中指定信息和字段对应的文件
- sql中删除冗余数据和一个叫department的表,里面只有一个字段name,一共有4条纪录,分别是a,b,c,d,对应四个球对,现在对列出所有组合等sql面试题
- 利用shell删除数据表中指定信息和字段对应的文件
- Oracle中使用游标获取指定数据表的所有字段名对应的字符串
- mysql中约束的划分,添加和删除各种字段约束和对数据表的更名
- MySQL入门——修改数据表3:删除指定表的指定的数据列(字段)
- Oracle生成查询包括对应于所有数据表记录语句中指定的字段名
- MySQL入门——修改数据表5:给指定表的指定字段添加外键约束
- 这是一个定时脚本,主要功能是遍历该文件夹下的所有文件并存储到数组,对数据中的文件进行操作,一个一个移动到指定的目录下,并删除原有文件
- sql添加,修改数据及删除表,表约束、字段及数据
- 更新数据库所有表的某一个指定字段 ,附加对‘将 varchar 值转换为数据类型为 int 的列时发生语法错误’处理方法