【发布时间】:2017-09-17 17:04:37
【问题描述】:
我有一个包含许多表的数据库,其中许多表的名称包含字母“PMO”。我希望能够从名称包含字符串“PMO”的所有表中删除所有行。因此,例如,从表“PMOThing”和“PMOOtherThing”中删除,而不是从表“Thing”或“OtherThing”中删除。
编辑
有人建议有一个重复的问题。它很接近,但并不完全。问题是如何删除名称包含某个字符串的表。我不想放弃这些表;我想从中删除所有行,但保留表格。如果有人知道如何修改下面的代码(来自建议的重复问题)来做我想做的事,那就太酷了!
DECLARE @cmd varchar(4000)
DECLARE cmds CURSOR FOR
SELECT 'drop table [' + Table_Name + ']'
FROM INFORMATION_SCHEMA.TABLES
WHERE Table_Name LIKE 'prefix%'
OPEN cmds
WHILE 1 = 1
BEGIN
FETCH cmds INTO @cmd
IF @@fetch_status != 0 BREAK
EXEC(@cmd)
END
CLOSE cmds;
DEALLOCATE cmds
【问题讨论】:
-
听起来和这个StackOverflow question类似
-
别这样,太危险了!您将构建一个很酷的小脚本,它将解决您的所有问题并将其设置为数据库作业并忘记它,直到有一天,在您忘记它很久之后(或者可能在您离开之后),有人会来创建一个名为“TOPMOST_EARNERS”的表,当他们发现您的脚本已将其清除时,您将受到诅咒。编写一个脚本,专门列出要被截断的表,有人必须不时观察一下以维护和验证作为双重检查。
-
感谢大家的帮助!
标签: sql-server