Имя является зарезервированным словом в MySQL? - PullRequest
3 голосов
/ 10 апреля 2009

Можно ли назвать столбец name в моих таблицах mysql?

Ответы [ 6 ]

16 голосов
/ 10 апреля 2009

Почему бы просто не попробовать?

mysql> select name from name;
+------+
| name |
+------+
|    1 |
+------+

Также вы можете указывать любые имена с помощью ``.

mysql> select `from` from `from`;
+------+
| from |
+------+
|    1 |
+------+
4 голосов
/ 10 апреля 2009

Независимо от того, можете ли вы , вы можете подумать , почему вы хотите сделать это в первую очередь. Имя чего? Какое имя? Через несколько лет, если вы посмотрите на схему базы данных, вы все еще будете помнить эти детали?

Я полагаю, что в ваших же интересах было бы обращаться с именем столбца так же, как с любыми именами переменных, и давать ему описательное имя. Спустя годы вы (или любой, кто поддерживает ваш код) будут благодарить вас.

4 голосов
/ 10 апреля 2009

Да , даже если это персональное имя, я бы порекомендовал FirstName или FullName в качестве имени столбца, чтобы быть более конкретным MYSQL Reserved Words

4 голосов
/ 10 апреля 2009

Вы должны хорошо назвать столбец «имя». Проверьте http://dev.mysql.com/doc/refman/5.1/en/reserved-words.html для более подробной информации о том, как обращаться с зарезервированными словами.

Обтекание имен столбцов символом (`) гарантирует, что даже зарезервированные слова не будут неверно истолкованы.

0 голосов
/ 15 мая 2011

Просто предостережение. Как имя поля name в порядке.

Однако в хранимых процедурах имя как переменная делает что-то еще.

Рассмотрим следующую процедуру. Когда я вызывал эту процедуру, она всегда изменяла первую запись в моей базе данных конфигурации. Как только я переименовал переменную с именем name во что-то другое, все заработало нормально.

PROCEDURE `updateConfig`(IN name VARCHAR(255), IN val VARCHAR(255))
BEGIN
UPDATE LOW_PRIORITY `config`
  SET `value`=val
  WHERE `name` = name
  LIMIT 1;
END
0 голосов
/ 10 апреля 2009
CREATE TABLE mytest (name INT);

SELECT  *
FROM    mytest;

name
--------

В сомнительных случаях вы можете заключать имена в серьезные акценты:

CREATE TABLE `CREATE TABLE` (name INT);

SELECT  *
FROM    `CREATE TABLE`;

name
--------
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...