在oracle中,要删除所有表和约束,您需要键入如下内容
DROP TABLE myTable CASCADE CONSTRAINTS PURGE;
这将完全删除这些表及其依赖项。SQL server的等价物是什么??
发布于 2011-02-01 12:05:58
我不相信SQL有一个类似优雅的解决方案。您必须先删除所有相关约束,然后才能删除表。
幸运的是,这些都存储在信息模式中,您可以访问它来获取您的攻击列表。
这篇博文应该能帮你找到你需要的东西:http://weblogs.asp.net/jgalloway/archive/2006/04/12/442616.aspx
-- t-sql scriptlet to drop all constraints on a table
DECLARE @database nvarchar(50)
DECLARE @table nvarchar(50)
set @database = 'DatabaseName'
set @table = 'TableName'
DECLARE @sql nvarchar(255)
WHILE EXISTS(select * from INFORMATION_SCHEMA.TABLE_CONSTRAINTS where constraint_catalog = @database and table_name = @table)
BEGIN
select @sql = 'ALTER TABLE ' + @table + ' DROP CONSTRAINT ' + CONSTRAINT_NAME
from INFORMATION_SCHEMA.TABLE_CONSTRAINTS
where constraint_catalog = @database and
table_name = @table
exec sp_executesql @sql
END
发布于 2011-03-30 23:44:24
在SQL Server Management Studio中,转到“选项”/“SQL Server对象资源管理器”/“脚本”,然后启用“为相关对象生成脚本”。然后右键单击表,script > drop to > new query window,它将为您生成它。
发布于 2011-05-26 03:48:21
这可能是一个可怕的解决方案,但我发现它很快。这与Vinnie的回答类似,但SQL语句的产品是另一系列SQL语句,它们将删除所有约束和表。
(
select
'ALTER TABLE ' + tc.table_name + ' DROP CONSTRAINT ' + tc.constraint_name + ';'
from
INFORMATION_SCHEMA.TABLES t
,INFORMATION_SCHEMA.TABLE_CONSTRAINTS tc
where
t.table_name = tc.table_name
and tc.constraint_name not like '%_pk'
and tc.constraint_name not like 'pk_%'
and t.table_catalog='<schema>'
) UNION (
select
'DROP TABLE ' + t.table_name + ';'
from
INFORMATION_SCHEMA.TABLES t
where
t.table_catalog='<schema>'
)
https://stackoverflow.com/questions/4858488
复制相似问题