tuple_object:upsert()
-
object
tuple_object
¶ -
tuple_object:
upsert
({{operator, field_no, value}, ...})¶ То же самое, что и
tuple_object:update()
, но игнорирует ошибки. В случае ошибки кортеж остаётся нетронутым, но выводится сообщение об ошибке. Игнорируются только клиентские ошибки, такие как «плохой тип поля» или «неправильный индекс/имя» поля. Системные ошибки, такие как OOM, не игнорируются и поднимаются так же, как и при обычномupdate()
. Обратите внимание, что игнорируются только некорректные операции. Все корректные операции применяются.Параметры: - operator (
string
) – тип операции, представленный строкой (например, „=
“ означает „присвоить новое значение“) - field_no (
number
) – к какому полю применяется операция. Номер поля может быть отрицательным, что означает, что позиция рассчитывается с конца кортежа. (#кортеж + отрицательный номер поля + 1) - value (
lua_value
) – значение, которое применяется
возвращает: новый кортеж
тип возвращаемого значения: tuple
В следующем примере одна операция применяется, а другая – нет.
tarantool> t = box.tuple.new({1, 2, 3}) tarantool> t2 = t:upsert({{'=', 5, 100}}) UPSERT operation failed: ER_NO_SUCH_FIELD_NO: Field 5 was not found in the tuple --- ... tarantool> t --- - [1, 2, 3] ... tarantool> t2 --- - [1, 2, 3] ... tarantool> t2 = t:upsert({{'=', 5, 100}, {'+', 1, 3}}) UPSERT operation failed: ER_NO_SUCH_FIELD_NO: Field 5 was not found in the tuple --- ... tarantool> t --- - [1, 2, 3] ... tarantool> t2 --- - [4, 2, 3] ...
- operator (
-