Как функция транзакции в Codeigniter 3 работает с запросом? - PullRequest
0 голосов
/ 07 мая 2019

Так что у меня есть этот запрос в моих моделях.

$this->db->trans_begin();
$this->db->insert($somequeryhere);
$this->db->insert($somequeryhere2);
$this->db->insert($somequeryhere3);
$this->db->insert($somequeryhere4);
$this->db->update($somequeryhere7);
$this->db->update($somequeryhere21);
$this->db->delete($somequeryhere10);
if($this->db->trans_status() === FALSE){
   $this->db->trans_rollback(); return false;
}else{
   $this->db->trans_commit(); return true;
} 

Транзакция работает хорошо.Но это сбивает с толку, когда я пытался остановить процесс PHP в середине запроса, как показано ниже.

$this->db->trans_begin();
$this->db->insert($somequeryhere);
$this->db->insert($somequeryhere2);
$this->db->insert($somequeryhere3);
$this->db->insert($somequeryhere4);
die;
$this->db->update($somequeryhere7);
$this->db->update($somequeryhere21);
$this->db->delete($somequeryhere10);
if($this->db->trans_status() === FALSE){
   $this->db->trans_rollback(); return false;
}else{
   $this->db->trans_commit(); return true;
} 

Транзакция все еще работает.Я думал, что PHP не достиг $this->db->trans_status(), поэтому транзакция не будет работать, но это также работает как использование или без использования $this->db->trans_status().Может кто-нибудь объяснить это?

Я пытался использовать $this->db->trans_start(); и $this->db->trans_complete();, и откат транзакции все еще выполнялся.

1 Ответ

1 голос
/ 22 мая 2019

Если вы поместите кубик в середину кода после trans_begin ().он не будет фиксироваться. Если вы хотите проверить состояние данных обновления вставки, вы не должны использовать для этого метод trans.

Поскольку для метода trans - фиксация или откат, необходимо выполнить запрос

//$this->db->trans_begin();
$this->db->insert($somequeryhere);
$this->db->insert($somequeryhere2);
$this->db->insert($somequeryhere3);
$this->db->insert($somequeryhere4);
die;
$this->db->update($somequeryhere7);
$this->db->update($somequeryhere21);
$this->db->delete($somequeryhere10);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...