【问题标题】:Can't create database named "delete"?无法创建名为“delete”的数据库?
【发布时间】:2020-06-11 23:01:59
【问题描述】:

我正在使用以下内容创建数据库:

use master 

IF DB_ID(N'delete') IS NULL 
    CREATE DATABASE delete 

但得到一个错误

消息 156,第 15 级,状态 1,第 1 行
关键字“删除”附近的语法不正确

因为delete 是保留字。但是有没有办法创建一个名为“delete”的数据库?

【问题讨论】:

    标签: sql sql-server database tsql


    【解决方案1】:

    如您所见,delete 是大多数 SQL 数据库中的保留字。

    可以引用标识符。在您似乎正在使用的 T-SQL 中,您可以使用方括号来执行此操作:

    CREATE DATABASE [delete];
    

    但是我不建议这样做。从那时起,您每次使用时都需要引用数据库名称 - 如果您不这样做,您可能会遇到非直观的错误消息。正如我所看到的,英语中有足够的单词我们可以避免 SQL 保留字的非常小的子集(我也会将其扩展到关键字)。

    这个怎么样,例如:

    CREATE DATABASE db_delete;
    

    【讨论】:

    • 而且我还可以在创建之前检查不允许某些数据库名称。
    • @Debbie.S - 听起来您正在根据某些输入创建数据库名称,例如用户提供的名称。在某种程度上,您可以使用QuoteName() 来避免问题。数据库名称必须遵循identifier 的规则,但这并不意味着所有允许的名称都是不错的选择。使用域适当的前缀可能是有意义的,例如BowlingLeague_,以减少混淆。
    【解决方案2】:

    删除是保留字,尝试[delete] 而不是delete 或选择更好的数据库名称,例如itemstodelete?

    【讨论】:

      猜你喜欢
      • 2013-11-30
      • 1970-01-01
      • 2014-04-10
      • 2014-06-16
      • 2020-11-24
      • 2014-05-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多