如果存在,如何在SQL Server 2008中删除表

时间:2015-02-11 23:22:56

标签: sql sql-server-2008

我们公司正在将其中一个产品从SQL Server 2005迁移到2008,并且在日志中我注意到有关删除表的错误(如果不存在)。在SQL Server 2005中,我们有这个删除表

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

似乎不再起作用了。

只有在SQL Server 2008中存在表时,删除表的正确方法是什么?

2 个答案:

答案 0 :(得分:5)

应该这样做!

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

答案 1 :(得分:1)

此代码适用于我的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)