MSSQL 删除特定标识开头的表

在使用数据库中,我们经常通过不同的开头,来区分不用应用说使用的表。
比如BBSMax会使用bx_,Discuz默认使用cdb_,这样做对于维护数据库是相当方便的(当然,不同应用如果能分库就更好了 XD)
如果某个应用不用了,只想删除这个应用的表怎么办呢?
在MSSQL,可以用执行下面的SQL语句来实现,只要把红色部分修改成需要的表开头名既可。
这个方法在MSSQL2005下测试成功(需要注意的事,如果表间存在依赖关系,那么不可能一次性删除所有的表,有的表会因为依赖关系无法删除,不过当他的依赖关系已经被删除了以后就可以删除了(比如B表依赖A表,那么第一次执行,A表无法删除,因为被B依赖,但是B没有被依赖,所以被删除了,于是再次执行,A没了依赖,就可以被删除了)

DECLARE cursorname cursor for select ‘drop table ‘+name from sysobjects where name like ‘bx%’ and xtype = ‘u’
open cursorname
declare @curname sysname
fetch next from cursorname into @curname
while(@@fetch_status=0)
begin
exec(@curname)
fetch next from cursorname into @curname
end
close cursorname
deallocate cursorname

以上 ><

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注