Введение
Оператор в языке структурированных запросов) Оператор SQL UPDATE изменяет данные одной или нескольких записей в таблице. Можно обновить все строки или выбрать подмножество с помощью условия. Оператор UPDATE имеет следующий вид:
An SQL UPDATE statement changes the data of one or more records in a table. Either all the rows can be updated, or a subset may be chosen using a condition. The UPDATE statement has the following form:
UPDATE имя_таблицы SET имя_столбца = значение [, имя_столбца = значение] [WHERE условие]
Для успешного выполнения UPDATE у пользователя должны быть права на манипулирование данными (привилегия UPDATE) для таблицы или столбца, а обновляемое значение не должно нарушать действующие ограничения (например, первичные ключи, уникальные индексы, ограничения CHECK и NOT NULL). В некоторых базах данных, таких как PostgreSQL, при наличии предложения FROM происходит, по сути, соединение целевой таблицы с таблицами, указанными в списке FROM, и каждая строка результата соединения представляет собой операцию обновления для целевой таблицы. При использовании FROM необходимо убедиться, что соединение выдает не более одной строки для каждой строки, подлежащей изменению. Иными словами, целевая строка не должна соединяться более чем с одной строкой из другой таблицы (таблиц). Если это происходит, то для обновления целевой строки будет использована только одна из строк соединения, но предсказать, какая именно, не всегда возможно. Из-за этой неопределенности безопаснее ссылаться на другие таблицы только во вложенных запросах, хотя это часто сложнее для чтения и медленнее, чем использование соединения. MySQL не соответствует стандарту ANSI.
Возможные проблемы
См. Проблему Хэллоуина. Определенные типы операторов UPDATE могут зацикливаться бесконечно, если в предложении WHERE и в одном или нескольких предложениях SET используется взаимосвязанный индекс.