UPDATE
UPDATE изменяет подходящие строки одной таблицы.
Синтаксис
Заголовок раздела «Синтаксис»UPDATE table_nameSET column_name = expression [, ...][WHERE condition][RETURNING expression [, ...]]Описание
Заголовок раздела «Описание»Каждое присваивание вычисляется для целевой строки по её исходным значениям. Без WHERE целевыми становятся все строки. Условие, не выбравшее строк, даёт успешное обновление нуля строк.
Параметры
Заголовок раздела «Параметры»column_name задаёт изменяемый столбец, expression вычисляет новое значение,
а condition выбирает строки. RETURNING вычисляет выражения по изменённым
строкам.
Результат
Заголовок раздела «Результат»Без RETURNING результатом является число затронутых строк. RETURNING формирует набор изменённых строк без подразумеваемого порядка.
Поведение в транзакции
Заголовок раздела «Поведение в транзакции»Все подходящие строки и обслуживаемые индексы изменяются атомарно. Ограничение или конфликт записи не публикует ранее обработанную строку этого же оператора.
Ошибки и ограничения
Заголовок раздела «Ошибки и ограничения»Ограничения проверяются по новым значениям. Конкурирующие писатели могут получить повторяемый serialization conflict или row-lock timeout. Навигационные пути в DML-выражениях версии 1.2 не принимаются.
Обычной сессии нужны CONNECT, USAGE схемы и UPDATE для изменяемых столбцов. Чтение столбцов в присваиваниях, WHERE и RETURNING независимо требует SELECT.
CREATE TABLE ref_update (id INTEGER PRIMARY KEY, revision INTEGER NOT NULL);INSERT INTO ref_update VALUES (1, 1), (2, 1);UPDATE ref_update SET revision = revision + 1 WHERE id = 1 RETURNING id, revision;См. также
Заголовок раздела «См. также»См. Изменение данных, Транзакции и ROLLBACK.