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
. В этом случае можно попробовать выполнить аналогичную транзакцию снова.Была ли статья полезна?
ПредыдущаяСледующая - Указывается название столбца –