数据库删除列
来源:互联网 发布:dw软件 编辑:程序博客网 时间:2024/05/23 19:06
先删除约束。
--删除指定表中的指定列的约束
CREATE PROCEDURE P_DelConstraint
@table_name varchar(50), --表名
@col_name varchar(50) --列名
AS
declare @tbname sysname,@fdname sysname
select @tbname=@table_name --要处理的表名
,@fdname=@col_name --要处理的字段名
--定义删除处理的语句
declare tb cursor local for
--默认值约束
select sql='alter table ['+b.name+'] drop constraint ['+d.name+']'
from syscolumns a
join sysobjects b on a.id=b.id and a.name=@fdname and b.name=@tbname
join syscomments c on a.cdefault=c.id
join sysobjects d on c.id=d.id
union --外键引用
select s='alter table ['+c.name+'] drop constraint ['+b.name+']'
from sysforeignkeys a
join sysobjects b on b.id=a.constid
join sysobjects c on c.id=a.fkeyid
join syscolumns d on d.id=c.id and a.fkey=d.colid and d.name=@fdname
join sysobjects e on e.id=a.rkeyid and e.name=@tbname
join syscolumns f on f.id=e.id and a.rkey=f.colid
union --主键/唯一键/索引
select case when e.xtype in('PK','UQ') then 'alter table ['+c.name+'] drop constraint ['+e.name+']'
else 'drop index ['+c.name+'].['+a.name+']' end
from sysindexes a
join sysindexkeys b on a.id=b.id and a.indid=b.indid
join sysobjects c on b.id=c.id and c.xtype='U' and c.name=@tbname
join syscolumns d on b.id=d.id and b.colid=d.colid and d.name=@fdname
left join sysobjects e on e.id=object_id(a.name)
where a.indid not in(0,255)
--执行删除
declare @s varchar(8000)
open tb
fetch next from tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch next from tb into @s
end
close tb
deallocate tb
GO
--删除指定表中的指定列的约束
CREATE PROCEDURE P_DelConstraint
@table_name varchar(50), --表名
@col_name varchar(50) --列名
AS
declare @tbname sysname,@fdname sysname
select @tbname=@table_name --要处理的表名
,@fdname=@col_name --要处理的字段名
--定义删除处理的语句
declare tb cursor local for
--默认值约束
select sql='alter table ['+b.name+'] drop constraint ['+d.name+']'
from syscolumns a
join sysobjects b on a.id=b.id and a.name=@fdname and b.name=@tbname
join syscomments c on a.cdefault=c.id
join sysobjects d on c.id=d.id
union --外键引用
select s='alter table ['+c.name+'] drop constraint ['+b.name+']'
from sysforeignkeys a
join sysobjects b on b.id=a.constid
join sysobjects c on c.id=a.fkeyid
join syscolumns d on d.id=c.id and a.fkey=d.colid and d.name=@fdname
join sysobjects e on e.id=a.rkeyid and e.name=@tbname
join syscolumns f on f.id=e.id and a.rkey=f.colid
union --主键/唯一键/索引
select case when e.xtype in('PK','UQ') then 'alter table ['+c.name+'] drop constraint ['+e.name+']'
else 'drop index ['+c.name+'].['+a.name+']' end
from sysindexes a
join sysindexkeys b on a.id=b.id and a.indid=b.indid
join sysobjects c on b.id=c.id and c.xtype='U' and c.name=@tbname
join syscolumns d on b.id=d.id and b.colid=d.colid and d.name=@fdname
left join sysobjects e on e.id=object_id(a.name)
where a.indid not in(0,255)
--执行删除
declare @s varchar(8000)
open tb
fetch next from tb into @s
while @@fetch_status=0
begin
exec(@s)
fetch next from tb into @s
end
close tb
deallocate tb
GO
- 数据库删除列
- 数据库增加列或删除列操作
- 数据库操作列,添加删除
- 删除数据库中的某列
- Oracle数据库怎么删除列
- 关于数据库删除列等
- myql数据库使用MySQL 添加列,修改列,删除列
- 【数据库】数据库增加列或删除列操作
- 删除数据库列中重复数据
- 数据库删除指定列重复数据
- 在数据库中删除某一列
- 删除列
- 删除列
- 删除数据库表有约束(constraint)的列
- 操作数据库表中的字段(增加、删除列)
- 根据某列删除数据库里重复记录
- [转]删除数据库表有约束(constraint)的列
- SQL2000删除或修改数据库列的默认值
- Hibernate学习笔记!- -
- 创建XML文件
- 无参数调用存储过程
- vs.net中web services入门
- 一条短信引发的感想
- 数据库删除列
- 框架与系统架构
- hibernat学习
- Ruby and Rails 当时
- 第五周--星期四
- BS查询结果的链接都是http:////...
- 一个很简单的DirectShow例子
- hibernate学习要点指引
- net调用远程机器上的WebService