如何在SQL Server 2008中仅在存在时删除一张表

6

我们公司正在将其中一个产品从SQL Server 2005迁移到2008版本,在日志中我注意到有关删除不存在表的错误过多。在SQL Server 2005中,我们使用以下方法来删除表:

IF OBJECT_ID('dbo.Units', 'U') IS NOT NULL
   DROP TABLE dbo.Units

看起来不再起作用。

如果在SQL Server 2008中存在一个表,删除该表的正确方法是什么?


2
如何在SQL Server 2008中检查表是否存在,如果不存在则创建表? - SoulTrain
你的意思是“似乎不再起作用”? - Greenstone Walker
2个回答

13

应该可以了!

IF EXISTS 
        (SELECT 
             TABLE_NAME 
         FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_NAME = 'TableToDrop') 
DROP TABLE TableToDrop

0

这段代码在我的SQL Server 2012上运行正常:

IF OBJECT_ID('t', 'U') IS NOT NULL DROP TABLE t
CREATE TABLE t(id int)

也许你的名称有误(例如,在新安装中使用大小写敏感排序?)。你遇到了什么样的错误? 请注意,在SQL Server 2016中,您可以使用DROP IF EXISTS

DROP TABLE IF EXISTS t
CREATE TABLE t(id int)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接