MySQL中名为Status的列

t40tm48m  于 11个月前  发布在  Mysql
关注(0)|答案(5)|浏览(153)

我一直在使用MySQL,我需要一个名为“状态”的表中的列。
我知道这个词“状态”是MySQL中的一个关键字,我想知道如果我写这样的SQL语句,我是否会遇到问题:

select t.Id, t.Name, t.Status from Table t

字符串
或者在触发器中:

Set new.Status = 1;

if (new.Status <> old.Status) then
  /* do something */
end if


或者我应该用另一个词来命名它?

u3r8eeie

u3r8eeie1#

如果在MySQL中用`` Package 状态,状态可以是它自己的列。

SELECT `t`.`Status`. FROM `t`

字符串
但是为了避免以后混淆,你最好还是用别的方法来区分它。

pu82cl6c

pu82cl6c2#

我从来不建议使用关键字作为列名,但是如果你把它放在[]中,比如[Status],应该不会有问题。

llmtgqce

llmtgqce3#

TL;DR:避免关键字标识符,如果可以的话,重命名它们,否则小心地引用它们。

你是正确的,STATUS是一个关键字,可能是由于SHOW STATUS
如果对列进行 * 重命名 * 对您来说不是一件很麻烦的事,那么更改名称是最好的选择。这样,您可以避免以后遇到问题,或者为使用您的数据库结构的人保存麻烦。
如果你想保留它(因为“status”是一个方便的名字),它是完全可以的。虽然纯粹主义者咆哮,它确保了干净的代码,因为你必须使用反引号(`)或ANSI引号(即“)根据manual on quoting identifiers

SELECT `t`.`Status` FROM `Table` t -- properly quoted

SELECT t.status FROM `Table` t -- multi-part identifier

SELECT STATUS FROM `Table` t -- will still work, but tease any pedant

字符串
当然,这种标识符引用也适用于过程逻辑(如触发器脚本)。

ccrfmcuu

ccrfmcuu4#

你应该使用`` around然后在mysql和SQL中你应该使用[]

mwyxok5s

mwyxok5s5#

重命名你的专栏,讨论结束

相关问题