我们公司正在将其中一个产品从SQL Server 2005迁移到2008,并且在日志中我注意到有关删除表的错误(如果不存在)。在SQL Server 2005中,我们有这个删除表
IF OBJECT_ID('dbo.Units', 'U') IS NOT NULL
DROP TABLE dbo.Units
似乎不再起作用了。
只有在SQL Server 2008中存在表时,删除表的正确方法是什么?
答案 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)