Разрешить изменение количества и запретить изменение названия

Фактические данные получены через расширение interbase по TCP к отдельному серверу Firebird с проверкой пароля. Собственные учебные пользователи, базы и промежуточные резервные файлы удалены после наблюдений.

Наблюдаемый результат программы
НаблюдениеРезультат
До измененияCable — 3
После UPDATE(QTY) + commitCable — 9
Изменение TITLE разрешенонет
Код отказа TITLE-551
Название после отказаCable
Количество после отказа9
Другой товарClamp — 0
Строки и дополнительные наблюдения
{
    "before": [
        {
            "ID": 1,
            "TITLE": "Cable",
            "QTY": 3
        },
        {
            "ID": 2,
            "TITLE": "Clamp",
            "QTY": 0
        }
    ],
    "after_quantity_commit": [
        {
            "ID": 1,
            "TITLE": "Cable",
            "QTY": 9
        },
        {
            "ID": 2,
            "TITLE": "Clamp",
            "QTY": 0
        }
    ],
    "title_refusal": {
        "value": false,
        "warning": true,
        "code": -551,
        "message_present": true
    },
    "after_refusal": [
        {
            "ID": 1,
            "TITLE": "Cable",
            "QTY": 9
        },
        {
            "ID": 2,
            "TITLE": "Clamp",
            "QTY": 0
        }
    ],
    "granted_columns": [
        "QTY"
    ],
    "select_granted": true,
    "row_level_restriction_granted": false
}

Самостоятельный запуск создаёт result.json с данными и metrics.json с проверками рядом с example.php.