У меня есть два API-интерфейса restful: одно имя заказа на обновление и другое состояние заказа на обновление, и они используют ту же базу данных mysql и ту же таблицу под названием «Заказ».
И в своем клиентском коде я хочу вызвать эти два API с помощью транзакции, но обнаружил, что не могу контролировать один xid в двух сеансах mysql.
А мой дизайн такой:
код клиента:
api.xa_start(xid);
if (api.updateName('111') && api.updateStatus(1)) {
api.xa_commit(xid);
} else {
api.xa_rollback(xid);
}
код API (который находится на другом сервере):
function xa_start(xid) {
pdo.execute('xa start xid');
}
function xa_commit(xid) {
pdo.execute('xa commit xid');
}
function xa_rollback(xid) {
pdo.execute('xa rollback xid');
}
function updateName(name) {
pdo.execute('update order set name="'+name+'" where id=xx');
}
function updatestatus(status) {
pdo.execute('update order set status="'+status+'" where id=xx');
}
Но проблема в том, что MySQL кажется, что не может использовать один и тот же XID в двух сеансах ... Так, как я могу решить эту проблему ...