SQL-запрос с использованием первичного ключа - PullRequest
3 голосов
/ 16 ноября 2011

У меня есть таблица SQL с тремя столбцами (ключ, идентификатор, уровень логирования). Ключевой столбец устанавливается в качестве первичного ключа и автоматически увеличивается.

Представьте себе это:

key   id   loglevel
1     223     5
2     445     8

Теперь я хочу обновить таблицу, выбрав строку, которая соответствует определенному значению «ключа».

Я использую строку:

mysql_query("UPDATE Logs SET loglevel = 4 WHERE key = 2;"); 

Однако это не работает.

Когда я изменяю его на

mysql_query("UPDATE Logs SET loglevel = 4 WHERE id = 445;");

работает нормально. Тем не менее, я хочу обновить на основе "ключ", а не "идентификатор".

Есть идеи, что я делаю не так?

Ответы [ 2 ]

6 голосов
/ 16 ноября 2011

В MySQL ключ является зарезервированным словом и должен заключаться в кавычки.

"UPDATE Logs SET loglevel = 4 WHERE `key` = 2"

Я бы также настоятельно рекомендовал вам взглянуть на значение mysql_error , когда ваш запрос не удался, поскольку это могло дать вам подсказку, необходимую для самостоятельного решения.

Код ошибки: 1064. У вас ошибка в синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, чтобы найти правильный синтаксис для использования рядом с «ключом» в строке 1

1 голос
/ 16 ноября 2011

«ключ» - это зарезервированное слово в MySQL (см. http://dev.mysql.com/doc/refman/5.5/en/reserved-words.html).. Я бы предложил использовать в качестве вашего первичного ключа слово, отличное от «ключа», так как позже может возникнуть путаница, если столбец называется «ключ» идругое имя «id» в качестве общего соглашения заключается в использовании «id» в качестве первичного ключа ...

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