Списать остаток одним условным UPDATE и отличить отказ от ошибки

Данные получены настоящими запросами через native-расширение cubrid. После наблюдений собственная учебная таблица удалена.

Результат выполнения
НаблюдениеРезультат
До списанияКабель / остаток 5
Запрос 2 шт.Изменено 1; осталось 3
Запрос ещё 4 шт.Изменено 0; осталось 3
Второй SQL выполнен успешнода
Второе списание принятонет
Полученные строки и дополнительные наблюдения
{
    "initial": {
        "title": "Кабель",
        "qty": 5
    },
    "operations": [
        {
            "wanted": 2,
            "execute": true,
            "affected": 1,
            "qty": 3
        },
        {
            "wanted": 4,
            "execute": true,
            "affected": 0,
            "qty": 3
        }
    ],
    "predicate_and_decrement_in_one_sql": true,
    "affected_captured_before_readback": true
}

result.json содержит те же данные; metrics.json — проверки. Реквизиты входа в эти файлы не записываются.