日期:2014-05-18  浏览次数:20777 次

怎么完全的删除一个表,包括删除它的关系,用SQL?
如题

------解决方案--------------------
好像不行,需要先删除约束之类的,然后才能删除表,Oracle里面
有个casecade好像可以连带删除
------解决方案--------------------
alter table tablename drop constraint 约束名
drop table tablename
------解决方案--------------------
alter table 表名
drop constraint 約束名
------解决方案--------------------
drop...
------解决方案--------------------
在对象浏览器里找到列名 然后查看约束 如果不想用语法删可以直接右键删除默认约束
如果使用语法
使用 sp_helpconstraint 表 可以查看表约束名

alter table 表 drop constraint 约束名称
alter table 表 drop column 字段

------解决方案--------------------
夷,怎么我好像直接 drop table 会把他的外健约束给删掉呢?

其他的我没试过...
------解决方案--------------------
--drop table a
create table a
(
id int not null ,
name varchar(10)
)


--drop table b

create table b
(
id int not null ,
name varchar(10)
)

alter table b add constraint pk_a_id PRIMARY KEY (id )
alter table a add constraint pk_b_id PRIMARY KEY (id )

alter table b add constraint fk_b_id Foreign KEY (id ) REFERENCES a(id)

select *from b

insert into a select 1, 'Jack '
union all select 2 , 'FK '

insert into b
select 1, 'a '


if exists ( select object_Id( 'fk_b_id ') )
print 1
else
print 0

drop table b

if exists ( select object_Id( 'fk_b_id ') )
print 1
else
print 0
------解决方案--------------------
如果被删除的表拥有指向其他表的外键,但没有被其他表的外键引用,可以直接drop;
如果有其他表的外键引用被删除表的主键,只能先删掉外键关系,再drop。
具体sql语句记不清了,可以在sql server环境下导出sql看看
------解决方案--------------------
ALTER TABLE Table2 ADD CONSTRAINT Relation1 FOREIGN KEY ([Id]) _
REFERENCES Table1 ([Id])
ALTER TABLE Table2 DROP CONSTRAINT Relation1
DROP TABLE Table2
------解决方案--------------------
-- 禁用所有约束
EXEC sp_msforeachtable
@command1=N 'ALTER TABLE ? NOCHECK CONSTRAINT ALL '

-- 删除有数据R的表
EXEC sp_msforeachtable
@command1=N 'DELETE ? ',
@whereand=N 'AND EXISTS(
SELECT rows FROM dbo.sysindexes
WHERE id=O.id
AND rows> 0
AND indid <2) '

-- 启用所有约束
EXEC sp_msforeachtable
@command1=N 'ALTER TABLE ? CHECK CONSTRAINT ALL '
GO
------解决方案--------------------
存过太多就不写了

显示一个表的所有约束
select name from sysobjects where parent_obj=(select [id] from sysobjects where [name]=你要查的表名)

如果只显示外建
select name from sysobjects where parent_obj=(select [id] from sysobjects where [name]=你要查的表名)
and xtype= 'D '
------解决方案--------------------
字母写错
重发:


存过太多就不写了

显示一个表的所有约束
select name from sysobjects where parent_obj=(select [id] from sysobjects where [name]=你要查的表名)

如果只显示外建
select name from sysobjects where parent_obj=(select [id] from sysobjects where [name]=你要查的表名)
and xtype= 'F '