【问题标题】:IF Exists MSSQL always errorsIF 存在 MSSQL 总是错误
【发布时间】:2017-07-01 22:22:37
【问题描述】:

我正在尝试删除一个表(如果存在)。

我创建了一个表格,效果很好。我可以使用 DROP TABLE 命令删除表。我不能做的是这样的任何形式:

DROP TABLE IF EXISTS customer;

事实上,我似乎根本无法让任何形式的 IF EXISTS 工作。我去了 MS 网站并查找了如何执行此操作,但他们的示例甚至无法运行:

CREATE TABLE T1 (Col1 int);  
GO  
DROP TABLE IF EXISTS T1;  
GO  
DROP TABLE IF EXISTS T1;  

有什么想法吗?

【问题讨论】:

  • 你看到了什么错误?
  • 您确定不是您查找的 MySQL 文档吗?
  • 这种写法在 T-SQL pre-SQL Server 2016 中无效。请参阅here 以获取解决方案。
  • 非常感谢!我正在使用 MSSQL 添加进行搜索,但仍然没有得到任何东西。但是,您的链接是完美的。正是我想要的!
  • 这是我需要的答案:stackoverflow.com/questions/7887011/… 感谢各位的帮助!

标签: sql-server


【解决方案1】:

根据documentationIF EXISTS 子句仅允许在 Azure SQL 数据库和 SQL Server 2016 或更高版本中使用。因此,您似乎使用的是 SQL Server 2014 或更早版本。

您需要首先检查该表是否存在于早期版本中。一种方法是检查 NOT NULL 的 OBJECT_ID:

IF OBJECT_ID(N'dbo.customer', 'U') IS NOT NULL DROP TABLE dbo.customer;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2010-12-20
    • 2018-03-10
    • 2011-04-18
    • 1970-01-01
    • 2011-08-12
    • 2021-06-10
    • 1970-01-01
    • 2021-06-05
    相关资源
    最近更新 更多