Tarantool CE/EE Documentation portal logo
Помощь
Обновлена 15 сентября 2026 г. в 08:55

tuple_object:upsert()

upsert({{operator, field_no, value}, ...})

То же самое, что tuple_object:update(), но с игнорированием ошибок. В случае ошибки кортеж остается нетронутым, но выводится сообщение об ошибке. Игнорируются только клиентские ошибки, такие как неверный тип поля или неправильный индекс/имя поля. Системные ошибки, такие как нехватка памяти, не игнорируются и вызываются так же, как при обычном 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]...