UPDATE (изменения строк таблицы)
Важно
Поддержка синтаксиса PostgreSQL в YDB находится в разработке. Использовать её в production окружениях не рекомендуется. Запросы в PostgreSQL могут исполняться до нескольких раз медленнее по сравнению с аналогичными запросами на YQL.
Основной сценарий, который можно тестировать — выполнение аналитических запросов к хранимым в YDB данным.
Синтаксис инструкции UPDATE:
UPDATE <table name>
SET <column name> = [<new value>, CASE ... END]
WHERE <search column name> = [<search value>, IN]
Конструкция UPDATE ... SET ... WHERE работает так:
- Задаётся название таблицы –
UPDATE```, в которой будет произведено обновление данных;
- Указывается название столбца –
SET<column name>, где следует обновить данные. Может применяться конструкция для указания набора данныхCASE ... END;- Задаётся новое значение –
<new value>;- Указываются критерии поиска –
WHEREс указанием колонки для поиска<search column name>и значения, которому должен соответствовать критерий поиска. Если применяется CASE, тогда указывается операторINс перечислением значений. Обновление одной строки в таблице с условиями
Обновление без условий
Обновление с условиями
UPDATE people SET name = 'Alexander' WHERE lastname = 'Doe';UPDATE people SET age = 31 WHERE country = 'USA' AND city = 'Los Angeles';В примере "Обновление с условиями" используется оператор объединения условий
AND(И) – условие будет выполнено только тогда, когда обе его части будут отвечать условиям истины. Также может использоваться операторOR(ИЛИ) – условие будет выполнено, если хотя бы одна из его частей будет отвечать условиям истины. Оператор и условий может быть множество:... WHERE country = 'USA' AND city = 'Los Angeles' OR city = 'Florida';Обновление одной записи в таблице с использованием выражений или функций
Часто при обновление данные нужно произвести с ними математические действия видоизменить с помощью функции.
Обновление с применением выражений
Обновление с применением функций
UPDATE people SET age = age + 1 WHERE country = 'Canada';UPDATE people SET name = UPPER(name) WHERE country = 'USA';Обновление нескольких полей строки таблице
Обновить данные можно в нескольких колонках одновременно. Для этого делается перечисление
<column name> = <column new value>после ключевого словаSET:UPDATE people SET country = 'Russia', city = 'Moscow' WHERE lastname = 'Smith';Обновление нескольких строк в таблицы с применением конструкции CASE ... END
Для одновременного обновления разных значений в разных строках можно использовать инструкцию
CASE ... END, с вложенными условиями выборки данныхWHEN <column name> <condition> (=,>,<) THEN <new value>. Далее следует конструкцияWHERE <column name> IN (<column value>, ...), которая позволяет задать список значений, по которым будет выполнено условие.Пример, где изменяется возраст (
age) людей (people) в зависимости от их имен:UPDATE people SET age = CASE WHEN name = 'John' THEN 32 WHEN name = 'Jane' THEN 26 END WHERE name IN ('John', 'Jane');Примечание
В отличии от PostgreSQL, в YDB с используются оптимистические блокировки. Это значит, что транзакции проверяют условия выполнения необходимых блокировок в конце своей работы, а не в начале. Если за время выполнения транзакции блокировка была нарушена – такая транзакция завершится ошибкой
Transaction locks invalidated. В этом случае можно попробовать выполнить аналогичную транзакцию снова.Была ли статья полезна?
ПредыдущаяСледующая - Указывается название столбца –