我一直在使用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
型或者我应该用另一个词来命名它?
u3r8eeie1#
如果在MySQL中用`` Package 状态,状态可以是它自己的列。
SELECT `t`.`Status`. FROM `t`
字符串但是为了避免以后混淆,你最好还是用别的方法来区分它。
pu82cl6c2#
我从来不建议使用关键字作为列名,但是如果你把它放在[]中,比如[Status],应该不会有问题。
llmtgqce3#
TL;DR:避免关键字标识符,如果可以的话,重命名它们,否则小心地引用它们。
你是正确的,STATUS是一个关键字,可能是由于SHOW STATUS。如果对列进行 * 重命名 * 对您来说不是一件很麻烦的事,那么更改名称是最好的选择。这样,您可以避免以后遇到问题,或者为使用您的数据库结构的人保存麻烦。如果你想保留它(因为“status”是一个方便的名字),它是完全可以的。虽然纯粹主义者咆哮,它确保了干净的代码,因为你必须使用反引号(`)或ANSI引号(即“)根据manual on quoting identifiers。
STATUS
SHOW STATUS
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
字符串当然,这种标识符引用也适用于过程逻辑(如触发器脚本)。
ccrfmcuu4#
你应该使用`` around然后在mysql和SQL中你应该使用[]
mwyxok5s5#
重命名你的专栏,讨论结束
5条答案
按热度按时间u3r8eeie1#
如果在MySQL中用`` Package 状态,状态可以是它自己的列。
字符串
但是为了避免以后混淆,你最好还是用别的方法来区分它。
pu82cl6c2#
我从来不建议使用关键字作为列名,但是如果你把它放在[]中,比如[Status],应该不会有问题。
llmtgqce3#
TL;DR:避免关键字标识符,如果可以的话,重命名它们,否则小心地引用它们。
你是正确的,
STATUS
是一个关键字,可能是由于SHOW STATUS
。如果对列进行 * 重命名 * 对您来说不是一件很麻烦的事,那么更改名称是最好的选择。这样,您可以避免以后遇到问题,或者为使用您的数据库结构的人保存麻烦。
如果你想保留它(因为“status”是一个方便的名字),它是完全可以的。虽然纯粹主义者咆哮,它确保了干净的代码,因为你必须使用反引号(`)或ANSI引号(即“)根据manual on quoting identifiers。
字符串
当然,这种标识符引用也适用于过程逻辑(如触发器脚本)。
ccrfmcuu4#
你应该使用`` around然后在mysql和SQL中你应该使用[]
mwyxok5s5#
重命名你的专栏,讨论结束