一个名为Status in MySQL的列

问题描述 投票:7回答:5

我一直在使用MySQL,我需要一个名为“Status”的列。

我知道这个单词“Status”是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

或者我应该将其重命名为另一个词?

mysql database naming
5个回答
8
投票

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

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

但是为了避免以后混淆,你可能会更好地以其他方式区分它。


3
投票

我永远不会建议使用关键字作为列名,但如果将它包含在[] [Status]中的[]中则不应该是一个问题。


1
投票

TL; DR:如果可以,请避免使用关键字标识符并重命名,否则请仔细引用它们。


你是正确的STATUS is a keyword,可能是由于SHOW STATUS

如果重命名列对您来说不是一件苦差事,更改名称是最佳选择。这样,您可以避免以后遇到问题或者避免使用数据库结构的人员麻烦。

如果你想保留它(因为“状态”是一个方便的名字),它是完全可以的。纯粹主义者咆哮,它确保清洁代码,因为你必须根据manual on quoting identifiers使用反引号(`)或ANSI引号(即“)”。

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

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


0
投票

你应该在mysql和sql中使用``你应该使用[]


0
投票

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

© www.soinside.com 2019 - 2024. All rights reserved.