如何删除除1以外的所有表

费加尔

我有一堆数据库表,我只想删除一个。我的脚本如下...。但是,当我尝试运行时,我创建了一个无限循环。

任何想法我该怎么做?

/* Drop all tables */
DECLARE @name VARCHAR(128)
DECLARE @SQL VARCHAR(254)

SELECT @name = (SELECT TOP 1 [name] FROM sysobjects 
                WHERE [type] = 'U' AND category = 0 ORDER BY [name])

WHILE @name IS NOT NULL 
IF @name !=  'tableNotToBeDropped'
BEGIN
    SELECT @SQL = 'DROP TABLE [dbo].[' + RTRIM(@name) +']'
    EXEC (@SQL)
    PRINT 'Dropped Table: ' + @name
    SELECT @name = (SELECT TOP 1 [name] FROM sysobjects  
                    WHERE [type] = 'U' AND category = 0 AND [name] > @name 
                    ORDER BY [name])
END
GO
卢卡斯·索佐达(Lukasz Szozda)

根本不需要循环。DROP TABLE可以使用一条语句删除多个表:

DECLARE @tables NVARCHAR(MAX) = 
         STUFF((SELECT ',' + QUOTENAME([table_name]) AS [text()]  
               FROM INFORMATION_SCHEMA.TABLES
               WHERE table_schema = 'dbo' 
               AND TABLE_NAME <> 'tableNotToBeDropped'
               FOR XML PATH('')),1,1,'');
               
DECLARE @sql NVARCHAR(MAX) = 'DROP TABLE ' + @tables;

-- debug
SELECT @sql;

EXEC sp_executesql @sql;

LiveDemo

怎么运行的:

  1. 从特定模式中获取所有表名,除了一个
  2. 创建以逗号分隔的列表
  3. 放下桌子

请记住,如果您的表已定义外键,则删除顺序很重要。


编辑:

SQL Server 2017版本:

DECLARE @sql NVARCHAR(MAX) = 'DROP TABLE IF EXISTS ' 
            + (SELECT string_agg(QUOTENAME(table_name), ',')
               FROM INFORMATION_SCHEMA.TABLES
               WHERE table_schema = 'dbo' 
               AND TABLE_NAME <> 'tableNotToBeDropped'
               AND TABLE_NAME LIKE 't%');

SELECT @sql;
EXEC sp_executesql @sql;

DBFiddle演示

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何删除访问表中除最近记录以外的所有记录

来自分类Dev

如何删除除您单击的课程以外的所有课程?

来自分类Dev

如何删除除jq以外的所有键?

来自分类Dev

如何删除除目录中的文件以外的所有文件?

来自分类Dev

尝试删除除特定工作表以外的所有工作表时出错

来自分类Dev

从表中查找重复记录,并删除除最近日期以外的所有记录

来自分类Dev

从单个SQL表中删除除最新条目以外的所有条目

来自分类Dev

从表中查找重复记录,并删除除最近日期以外的所有记录

来自分类Dev

vba选择/删除除第一个以外的所有工作表

来自分类Dev

如何删除单击的元素,而不是删除除单击的项目以外的所有项目?

来自分类Dev

删除列表中除1个数字以外的所有数字(PYTHON)

来自分类Dev

Excel使用代码名删除除活动工作表和指定工作表以外的所有工作表

来自分类Dev

SQL Server-插入表中-除1以外的所有列值均相同

来自分类Dev

如何从数组中删除除最后N个元素以外的所有元素?

来自分类Dev

如何删除除N个最新文件以外的所有文件?

来自分类Dev

如何用php删除文件夹中除一个以外的所有文件?

来自分类Dev

C#-如何从图像中删除除黑色以外的所有颜色

来自分类Dev

如何删除除一个以外的所有切换?

来自分类Dev

如何从分支中删除除最后一个x以外的所有提交?

来自分类Dev

如何删除Bourne Shell中除特定文件以外的所有文件?

来自分类Dev

如何使用lftp删除除cgi-bin和.ftpquota以外的所有文件

来自分类Dev

如何使用RegExp从文本中删除除ä,ö和ü以外的所有非单词字符

来自分类Dev

如何编写查询以删除除按ID分组的最大值以外的所有内容?

来自分类Dev

如何删除除一个以外的所有Azure资源组

来自分类Dev

jQuery:如何从元素中删除除最后一个类以外的所有类

来自分类Dev

如何从数组中删除除最后N个元素以外的所有元素?

来自分类Dev

如何删除除包含TRUNCATE-INSERT(包括PACK名称)的行以外的所有行

来自分类Dev

正则表达式记事本++:如何删除除URL以外的所有内容?

来自分类Dev

如何使用Puppet删除目录中除某些glob以外的所有文件?

Related 相关文章

  1. 1

    如何删除访问表中除最近记录以外的所有记录

  2. 2

    如何删除除您单击的课程以外的所有课程?

  3. 3

    如何删除除jq以外的所有键?

  4. 4

    如何删除除目录中的文件以外的所有文件?

  5. 5

    尝试删除除特定工作表以外的所有工作表时出错

  6. 6

    从表中查找重复记录,并删除除最近日期以外的所有记录

  7. 7

    从单个SQL表中删除除最新条目以外的所有条目

  8. 8

    从表中查找重复记录,并删除除最近日期以外的所有记录

  9. 9

    vba选择/删除除第一个以外的所有工作表

  10. 10

    如何删除单击的元素,而不是删除除单击的项目以外的所有项目?

  11. 11

    删除列表中除1个数字以外的所有数字(PYTHON)

  12. 12

    Excel使用代码名删除除活动工作表和指定工作表以外的所有工作表

  13. 13

    SQL Server-插入表中-除1以外的所有列值均相同

  14. 14

    如何从数组中删除除最后N个元素以外的所有元素?

  15. 15

    如何删除除N个最新文件以外的所有文件?

  16. 16

    如何用php删除文件夹中除一个以外的所有文件?

  17. 17

    C#-如何从图像中删除除黑色以外的所有颜色

  18. 18

    如何删除除一个以外的所有切换?

  19. 19

    如何从分支中删除除最后一个x以外的所有提交?

  20. 20

    如何删除Bourne Shell中除特定文件以外的所有文件?

  21. 21

    如何使用lftp删除除cgi-bin和.ftpquota以外的所有文件

  22. 22

    如何使用RegExp从文本中删除除ä,ö和ü以外的所有非单词字符

  23. 23

    如何编写查询以删除除按ID分组的最大值以外的所有内容?

  24. 24

    如何删除除一个以外的所有Azure资源组

  25. 25

    jQuery:如何从元素中删除除最后一个类以外的所有类

  26. 26

    如何从数组中删除除最后N个元素以外的所有元素?

  27. 27

    如何删除除包含TRUNCATE-INSERT(包括PACK名称)的行以外的所有行

  28. 28

    正则表达式记事本++:如何删除除URL以外的所有内容?

  29. 29

    如何使用Puppet删除目录中除某些glob以外的所有文件?

热门标签

归档