【问题标题】:Drop and create table in one command在一个命令中删除和创建表
【发布时间】:2016-03-10 14:09:53
【问题描述】:

你知道为什么下面的代码在 ms sql server 上是错误的吗?

DROP TABLE [IF EXISTS] database.table1,
create table table1 (...)

【问题讨论】:

  • 如果你不介意我问,你会在什么情况下使用它?这些命令的结果基本上是truncate
  • 是什么让你认为这是错误的?你有错误吗?请花点时间阅读minimal reproducible example
  • @Utsav 更改现有表的架构?
  • @MorganThrapp - 是的,这可能是一个场景。
  • BEGIN TRY / END TRYcreate table 内...

标签: sql sql-server exists create-table


【解决方案1】:

这是SQL Server 2016 语法。 对于早期版本,您可以使用EXISTS 函数检查您的表是否存在于sys.tables 列表中,如果存在则将其删除。然后创建一个新表。

有点像这样:

IF EXISTS (SELECT * FROM sys.tables WHERE name = 'table1' AND type = 'U') DROP TABLE table1;
CREATE TABLE table1
(
    ...
    ...
);

【讨论】:

  • 技术上 @henrik-staun-poulsen 实际上是 answers the question (记得你问过“你知道为什么下面的代码在 ms sql server 上是错误的吗?”),虽然这很有帮助,但应该不是公认的答案。它不起作用,因为您试图在运行的任何 SQL Server 版本中使用 SQL Server 2016 语法。
  • 由于SQL Server 2016 尚未商用,因此可以肯定他使用的是以前版本的 SQL Server;因此我的回答。无论如何,我现在已经编辑了我的答案以反映正确的意义。
【解决方案2】:

此语法仅在尚未发布的SQL Server 2016 上有效。

您确定您使用的是该版本吗? 否则,您可以使用 @pradeep-kumar suggests 的 IF Exists。

【讨论】:

    猜你喜欢
    • 2013-09-22
    • 1970-01-01
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多