TL; DR : избегайте идентификаторов ключевых слов и, если возможно, переименовывайте их, в противном случае тщательно цитируйте их.
Вы правы, что STATUS
является ключевым словом , вероятно, из-за SHOW STATUS
.
Если переименовать , столбец не является для вас тяжелой работой, изменение имени - лучший выбор. Таким образом, вы избежите проблем позже или избавите людей от проблем, которые используют вашу структуру базы данных.
Если вы хотите сохранить , однако (потому что «status» - это удобное имя), это совершенно нормально. Пока пуристы разглагольствуют, он гарантирует чистый код, потому что вы должны использовать обратные кавычки ( `) или кавычки 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
Конечно, этот вид цитирования идентификаторов работает и в процедурной логике (как в триггерных скриптах).