{
    "id": "sqlsrv150-transfer-rollback",
    "title": "Откатить перевод, если журнал отверг последний INSERT",
    "columns": [
        "Наблюдение",
        "Результат"
    ],
    "rows": [
        [
            "До отказа внутри транзакции",
            "8750 \/ 3750"
        ],
        [
            "Последний INSERT отклонён",
            true
        ],
        [
            "Причина сохранена до rollback",
            true
        ],
        [
            "Откат выполнен",
            true
        ],
        [
            "После отката, счёт 1",
            10000
        ],
        [
            "После отката, счёт 2",
            2500
        ],
        [
            "Прежняя запись журнала сохранена",
            true
        ]
    ],
    "checks": {
        "pending_balances_visible": true,
        "duplicate_rejected": true,
        "diagnostic_saved": true,
        "unique_violation_code": true,
        "rollback_succeeded": true,
        "balances_restored": true,
        "old_journal_preserved": true,
        "owned_objects_removed": true
    },
    "observations": {
        "inside_before_failure": [
            {
                "id": 1,
                "balance_minor": 8750
            },
            {
                "id": 2,
                "balance_minor": 3750
            }
        ],
        "saved_diagnostic_codes": [
            {
                "SQLSTATE": "23000",
                "code": 2627
            },
            {
                "SQLSTATE": "01000",
                "code": 3621
            }
        ],
        "after_rollback": [
            {
                "id": 1,
                "balance_minor": 10000
            },
            {
                "id": 2,
                "balance_minor": 2500
            }
        ],
        "journal": [
            {
                "operation_id": "TX-150-BUSY",
                "amount_minor": 77
            }
        ]
    },
    "runtime": {
        "php": "8.3.35",
        "extension": "5.13.3+20807",
        "odbc_driver": "18.07.0001",
        "odbc_api": "03.80",
        "server_version": "16.00.1000",
        "database": "phpmanual149",
        "transport": "local_named_pipe"
    },
    "owned_objects": [
        {
            "type": "TABLE",
            "name": "sqlsrv150_rollback_accounts_d44c7666aa4e"
        },
        {
            "type": "TABLE",
            "name": "sqlsrv150_rollback_journal_65d57caaeca5"
        }
    ],
    "removed_objects": [
        {
            "type": "TABLE",
            "name": "sqlsrv150_rollback_journal_65d57caaeca5"
        },
        {
            "type": "TABLE",
            "name": "sqlsrv150_rollback_accounts_d44c7666aa4e"
        }
    ]
}
