【问题标题】: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?