6.4.5 Синтаксис оператора UPDATE
UPDATE [LOW_PRIORITY] [IGNORE] tbl_name
SET col_name1=expr1 [, col_name2=expr2, ...]
[WHERE where_definition]
[LIMIT #]
Оператор UPDATE
обновляет столбцы в соответствии с их новыми значениями в
строках существующей таблицы. В выражении SET
указывается, какие именно
столбцы следует модифицировать и какие величины должны быть в них
установлены. В выражении WHERE
, если оно присутствует, задается, какие
строки подлежат обновлению. В остальных случаях обновляются все строки.
Если задано выражение ORDER BY
, то строки будут обновляться в указанном в
нем порядке.
Если указывается ключевое слово LOW_PRIORITY
, то выполнение данной команды
UPDATE
задерживается до тех пор, пока другие клиенты не завершат чтение
этой таблицы.
Если указывается ключевое слово IGNORE
, то команда обновления не будет
прервана, даже если при обновлении возникнет ошибка дублирования ключей.
Строки, из-за которых возникают конфликтные ситуации, обновлены не будут.
Если доступ к столбцу из указанного выражения осуществляется по аргументу
tbl_name
, то команда UPDATE
использует для этого столбца его текущее
значение. Например, следующая команда устанавливает столбец age
в
значение, на единицу большее его текущей величины:
mysql> UPDATE persondata SET age=age+1;
Значения команда UPDATE
присваивает слева направо. Например, следующая
команда дублирует столбец age
, затем инкрементирует его:
mysql> UPDATE persondata SET age=age*2, age=age+1;
Если столбец устанавливается в его текущее значение, то MySQL замечает это
и не обновляет его.
Команда UPDATE
возвращает количество фактически измененных строк. В
версии MySQL 3.22 и более поздних функция C API mysql_info()
возвращает
количество строк, которые были найдены и обновлены, и количество
предупреждений, имевших место при выполнении UPDATE
.
В версии MySQL 3.23 можно использовать LIMIT #
, чтобы убедиться, что было
изменено только заданное количество строк.