在使用数据库中,我们经常通过不同的开头,来区分不用应用说使用的表。 比如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
以上 ><