Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 为什么“Key”在Transact-SQL中是保留字? 许多开发人员使用key作为主键名,但为什么Transact-SQL认为它是保留词?_Sql Server_Tsql - Fatal编程技术网

Sql server 为什么“Key”在Transact-SQL中是保留字? 许多开发人员使用key作为主键名,但为什么Transact-SQL认为它是保留词?

Sql server 为什么“Key”在Transact-SQL中是保留字? 许多开发人员使用key作为主键名,但为什么Transact-SQL认为它是保留词?,sql-server,tsql,Sql Server,Tsql,而且,使用“Key”作为主键名是一种反模式?Key在ANSI SQL标准中是一个保留字,至少从SQL-92开始,可能是最早的版本,这也是T-SQL将其视为保留字的一个很好的理由 源代码是维护的BNF语法 至于使用KEY作为主键名是否是一种反模式的问题,我想说它是,就像使用其他保留字一样。根据我的经验,这当然只是一种观点和惯例,标准允许通过分隔标识符机制使用保留字作为标识符 另一方面,我认为我从未见过有人使用key作为列名。key在ANSI SQL标准中是一个保留字,至少从SQL-92开始,可能是

而且,使用“Key”作为主键名是一种反模式?

Key在ANSI SQL标准中是一个保留字,至少从SQL-92开始,可能是最早的版本,这也是T-SQL将其视为保留字的一个很好的理由

源代码是维护的BNF语法

至于使用KEY作为主键名是否是一种反模式的问题,我想说它是,就像使用其他保留字一样。根据我的经验,这当然只是一种观点和惯例,标准允许通过分隔标识符机制使用保留字作为标识符

另一方面,我认为我从未见过有人使用key作为列名。

key在ANSI SQL标准中是一个保留字,至少从SQL-92开始,可能是最早的版本,这也是t-SQL将其视为保留字的一个很好的理由

源代码是维护的BNF语法

至于使用KEY作为主键名是否是一种反模式的问题,我想说它是,就像使用其他保留字一样。根据我的经验,这当然只是一种观点和惯例,标准允许通过分隔标识符机制使用保留字作为标识符


顺便说一句,我想我从来没有见过有人用key作为列名。

我不明白你为什么在这里单选保留关键字key。你会问同样的关于选择、来源、地点或组的问题吗?如果是这样的话,为什么你会惊讶于这些词是保留关键字?是否曾尝试在任何编程语言中调用变量?若否,原因为何

与刚才提到的关键字一样,KEY只是另一个部分关键字,用于定义主键或外键约束;这是一件很平常的事,不是什么稀罕的事


如果您想将您的密钥称为KEY,这对我来说似乎很不寻常,以前从未见过这样做,那么请将其放在方括号中:[KEY]以逃避此操作。

我不明白您为什么在此处选择保留的关键字KEY。你会问同样的关于选择、来源、地点或组的问题吗?如果是这样的话,为什么你会惊讶于这些词是保留关键字?是否曾尝试在任何编程语言中调用变量?若否,原因为何

与刚才提到的关键字一样,KEY只是另一个部分关键字,用于定义主键或外键约束;这是一件很平常的事,不是什么稀罕的事


如果您想将您的密钥称为KEY,这对我来说似乎很不寻常,以前从未见过这样做,那么请将其放在方括号中:[KEY]以逃避它。

许多开发人员使用KEY作为主键名称,是吗?没见过。通常我会看到ID,或者一个更具体的名称,比如FooBarID。它在T-SQL中用于定义键,这就是为什么它是保留的。如果要将其用作列名,很可能必须将其括在括号中,例如:[Key]为什么它不是保留字?它在TSQL中有特定的含义,如TABLE或SELECT。它怎么可能不是一个保留字呢?当我看到通用ID作为一个表的主键时,我知道我将面临一个漫长而痛苦的未来。这很好地表明列名会根据它们所在的表而变化。这是很痛苦的工作。一般来说,数据库中的名称应该经过深思熟虑,并提供对其用法的一些见解。关键字这个词本身是完全模棱两可的。现在,如果您将其更改为ProductKey或其他相关的内容,则会立即非常清楚它是什么,并且该名称可以在整个系统中的任何表中保持不变。我更喜欢使用该表的名称作为其所有列的前缀。i、 e对于tblProduct,我将为主键选择的列名是Product_Id。这样,您就不必处理关键字。另一方面,有些内置函数(如user_id)使用相同的命名约定。许多开发人员使用Key作为主键名,是吗?没见过。通常我会看到ID,或者一个更具体的名称,比如FooBarID。它在T-SQL中用于定义键,这就是为什么它是保留的。如果要将其用作列名,很可能必须将其括在括号中,例如:[Key]为什么它不是保留字?它在TSQL中有特定的含义,如TABLE或SELECT。它怎么可能不是一个保留字呢?当我看到通用ID作为一个表的主键时,我知道我将面临一个漫长而痛苦的未来。这很好地表明列名会根据它们所在的表而变化。这是很痛苦的工作。一般来说,数据库中的名称应该经过深思熟虑,并提供对其用法的一些见解。关键字这个词本身是完全模棱两可的。现在,如果您将其更改为ProductKey或其他相关内容,它将立即生效
非常清楚这是什么,并且名称可以在整个系统的任何表中保持不变。我更喜欢使用表的名称作为其所有列的前缀。i、 e对于tblProduct,我将为主键选择的列名是Product_Id。这样,您就不必处理关键字。另一方面,有些内置函数(如user_id)使用相同的命名约定。