Php 当另一个事务在同一个表上运行时,Codeigniter事务能否启动?

Php 当另一个事务在同一个表上运行时,Codeigniter事务能否启动?,php,mysql,codeigniter,transactions,Php,Mysql,Codeigniter,Transactions,我有一个名为demon_model的模型,它包含如下方法: class Hell_model extends CI_Model { function insert_demon_to_hell() { $this->db->trans_start(); //insert to helldb for example //update to helldb for example $this->db->trans

我有一个名为demon_model的模型,它包含如下方法:

class Hell_model extends CI_Model {
   function insert_demon_to_hell()
   {
       $this->db->trans_start();
       //insert to helldb for example
       //update to helldb for example
       $this->db->trans_complete();
   }
}
我有一个叫demon_的控制器

//REST CONTROLLER INCLUDED HERE

class Demon_controller extends REST_CONTROLLER {
    function contruct() {
        //LOAD HELL MODEL HERE
    }

    function demon () {
       $demon_id = $this->get('demon_id');
       $this->hell_model->insert_demon_to_hell($demon_id);
    }
}

当有人遇到恶魔时,此API将调用。问题是,当两个或两个以上的人同时遇到demon(调用函数)时,即使我已经在模型函数中使用了事务,查询是否仍会在同一个表上运行?

事务不控制并发性,它们只是确保所有修改都已完成或没有修改。它是控制并发性的关键

因此,同时运行的事务数在理论上是无限的。但是,它们可以做什么以及什么时候做受到事务中语句隐式或显式设置的锁的限制


还有一件更重要的事情:
db->trans_start()
启动数据库事务,而不是CI事务。这意味着事务仅适用于在db级别上所做的更改,而不适用于在CI级别上所做的更改。例如,如果您对数据库中未持久化的CI对象的属性进行了更改,则回滚不会影响该属性的值。

如果您有任何不明确的地方,请在下面自由评论。事务不控制并发性,只需确保完成所有修改或不进行任何修改即可。控制并发性的是锁定机制。您有控制并发性的解决方案吗?正如我所写的:锁定。对不起,我的描述不好。因为我不知道该怎么说。