codeIgniter中的事务如何工作?我可以在交易后停止并互相启动吗?
看看我的例子
$this->db->trans_begin(); $a = 'UPDATE ......'; RETURN TRUE $b = 'INSERT INTO......'; RETURN FALSE $this->db->trans_rollback(); // I tried $this->db->trans_off(); var_dump( $this->db->trans_status() ); $this->db->trans_begin(); if ( $this->db->trans_status() === FALSE ) { $this->db->trans_rollback(); } else { $this->db->trans_commit(); }
我的第一个事务将始终返回FALSE(即使我确实需要回滚它),现在我需要关闭该事务并需要启动另一个事务.
问题在于$this-> db-> trans_status(),它总是在第二个事务上返回FALSE(即使在$this-> db-> trans_rollback()或trans_off()之后).
我究竟做错了什么 ?请帮我.
I am using MysqL as underlying database.
解决方法
现在可以手动设置trans_status了
$this->db->trans_begin(); $a = 'UPDATE ......'; RETURN TRUE $b = 'INSERT INTO......'; RETURN FALSE $this->db->trans_rollback(); //First transaction ends it will return FALSE always(in my case) $this->db->_trans_status = TRUE; // setting the trans_status manually,so it will ignore prevIoUs attempts $this->db->trans_begin(); //other operations .. if ( $this->db->trans_status() === FALSE ) { $this->db->trans_rollback(); } else { $this->db->trans_commit(); }