Функция отката транзакции не работает в Codeigniter - PullRequest
0 голосов
/ 24 февраля 2019

, когда я запускаю этот код, вставка данных в 3 таблицы успешно и фиксация при выдаче ошибки в запрос вставки 3-й таблицы , затем вставка данных в 1-ю и 2-ю таблицу, а не в 3-ю таблицу, а также не *Функция 1003 * RollBack работает правильно.Я хочу сделать, когда 3-й запрос таблицы не работает, то 1-я и 2-я таблица вставки данных будут удалены и удалены.

    $this->db->trans_start(TRUE);

    // 1st table insert query
    $this->db->insert('users',$userInfo);
    $userId = $this->db->insert_id();

    $query = $this->db->query("SELECT `roleId` FROM `role` WHERE roleName='Clint';");
    foreach ($query->result_array() as $row)
    { $roleId = $row['roleId']; }

    $user_role = array( 'user_id' => $userId, 'role_id' => $roleId );
    // 2nd table insert query
    $this->db->insert('user_role', $user_role);

    $city_id += [ "projectInfo" => $userId ];
    // 3rd table insert query
    $this->db->insert('project', $projectInfo);

    $this->db->trans_complete();
    if ($this->db->trans_status() === FALSE )
    {
            echo "Flase";
            $this->db->trans_rollback();
    }
    else
    {
            echo "True";
            $this->db->trans_rollback();
    }

1 Ответ

0 голосов
/ 26 февраля 2019

Вы откатываете транзакции вручную!В этом случае вы должны использовать

$ this-> db-> trans_begin ();НЕ $ this-> db-> trans_start ();

CI автоматически откатывает транзакции, вам не нужно делать это вручную.Если вы используете $ this-> db-> trans_start, вам не нужно $ this-> db-> trans_rollback ().

Закомментируйте $ this-> db-> trans_rollback () или оставьте их и используйте$ this-> db-> trans_begin (), затем проверьте результаты.

https://www.codeigniter.com/user_guide/database/transactions.html

Удачи!

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