怎么完全的删除一个表,包括删除它的关系,用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 '