Drop all tables whose names begin with a certain string如何删除所有名称以给定字符串开头的表?
我认为可以通过一些动态SQL和 如果数据库中有多个所有者,则可能需要修改查询以包括所有者。
这比使用生成脚本加运行的两步方法要干净。但是脚本生成的一个优点是,它使您有机会在实际运行之前检查所有要运行的内容。 我知道,如果要针对生产数据库执行此操作,请尽可能小心。 编辑代码示例已修复。
这将生成一个脚本。 添加子句以在删除之前检查表是否存在:
这将使您获得按外键顺序排列的表,并避免删除SQL Server创建的某些表。
在Oracle XE上,这有效:
或者,如果您想删除约束并释放空间,请使用以下命令:
这将生成一堆
对于
编辑: sp_MSforeachtable未记录,因此不适合生产,因为它的行为可能会因MS_SQL版本而异。 这是我的解决方案:
当然,您需要用前缀替换 我在寻找mysql语句以删除基于@Xenph Yan的所有WordPress表时看到的帖子,这是我最终要做的事情:
这将为您提供所有表以wp_开头的放置查询集
Xenph Yan的答案比我的答案干净得多,但这里的答案完全一样。
只需将 这对我有用。
如果是临时表,您可能需要尝试
我怀疑我对Xenph Yan的答案做了些微推导,因为我的表不在默认模式中。
-测试是表名 |