Этот код транзакции работает правильно? - PullRequest
0 голосов
/ 02 мая 2018

Я использую этот код для вставки данных в 2 таблицы,

try {
    array(PDO::ATTR_PERSISTENT => true);  
    $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    $db->beginTransaction();
    // 1st insert
    $db->exec("insert into users (id, username, password,permission) values (18, 'raman', 2002,3)");
    //2nd insert 
    $db->exec("insert into table_11 (id,user_id1,amount) values (14, '130', '11300')"); 

    $db->commit();
} catch (Exception $e) {
    $db->rollBack();
    echo "Failed  : " . $e->getMessage();
}

Этот код работает нормально, однако, когда я проверяю транзакцию путем выполнения 2-й ошибки вставки, поскольку я изменил имя таблицы на неправильное имя таблицы, я обнаружил, что 1-я вставка все еще работает и может добавлять новые данные, даже если 2-я вставка не работает, Мой вопрос, почему 1-я вставка сработала? Я использую MySQL.

1 Ответ

0 голосов
/ 05 мая 2018

Я обнаружил, почему этот код не работает должным образом, я должен использовать InnoDB при создании таблиц, поэтому я удалил текущие таблицы и создал новую с помощью механизма хранения InnoDB, теперь он работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...