SQL Codeigniter事务回滚多路访问回滚

弗朗西斯·泽维尔·安塔索(Francis Xavier S.

我有问题。如果当前有两个用户正在使用*代码*给出的交易将会发生什么

function upload_csv($filename,$type){
            $source = fopen(base_url().'uploads/'.$filename, 'r') or die("Problem open file");
             $data = fgetcsv($source,","); //1st Line /*DESCRIPTION PART*/
             $data = fgetcsv($source,","); //2nd Line /*DATA START*/
             $this->db->trans_begin();
             $loopflag = true;
             switch($type){     
                case 'receivable':
                                do{
                                    if($data[0]!=""){
                                        $loopflag = $this->csv_parser_receivable($data);
                                    }
                                    if($loopflag==false){break;}
                                }while($data = fgetcsv($source,1000,",")); 
                                break;
                case 'supplier':
                                do{
                                    if($data[0]!=""){
                                        $loopflag = $this->csv_parser_supplier($data);
                                    }
                                    if($loopflag==false){break;}
                                }while($data = fgetcsv($source,1000,",")); 
                                break;


                            }

        if (($this->db->trans_status() === FALSE)||($loopflag==false))
        {
            $this->chromephp->log('CANCELLED');
            // $this->chromephp->log("FAIL!! ROLLING BACK TO THE DEEP!");
            $this->db->trans_rollback();
        }
        else
        {
            $this->chromephp->log("FINISHED");
            // $this->chromephp->log("SUCCESS! COMMITTING....");
            $this->db->trans_commit();

            $this->consolidate_add($filename,$type);
        }
        $this->db->trans_end();

             fclose($source);
}

然后一个用户突然**数据库,而其他的仍然*批量加载*他的疑问?

阿富汗发展

交易的重要属性是它们是孤立的。从技术上讲,这意味着事务的执行与按顺序依次执行一个事务的空中运行具有相同的效果,并且在执行任何两个事务时没有重叠。这种执行称为“可序列化”,意思是“具有与串行执行相同的效果”。

用于实现可序列化的最流行的机制是locking这个概念很简单:

•每个事务保留对其使用的数据的访问权限。该保留称为锁。

•有读锁和写锁

•在读取一条数据之前,一个事务会设置一个读取锁。在写入数据之前,它会设置一个写入锁定。

•读锁与写锁冲突,写锁与写锁冲突。

•仅当没有其他事务在同一数据项上具有冲突的锁时,该事务才能获得锁。因此,只有在没有事务对x拥有写锁的情况下,它才能获得对x的读锁。

仅当没有事务在x上具有读锁或写锁时,它才能在x上获得写锁。尽管锁定的概念很简单,但是它对性能和正确性的影响可能很复杂,违反直觉并且很难预测。构建健壮的TP应用程序需要对锁定有深入的了解。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

SQL中的事务和回滚

来自分类Dev

在Owncloud App中回滚SQL事务

来自分类Dev

为什么SQL事务无法回滚

来自分类Dev

SQL Codeigniter:创建保存点并回滚到保存点/从控制器回滚多个事务

来自分类Dev

SQL Server-仅在以后回滚特定事务

来自分类Dev

使用THROW时,SQL Server回滚我的事务

来自分类Dev

具有多个包调用的PL / SQL回滚事务

来自分类Dev

T-Sql事务回滚局部变量

来自分类Dev

SQL Server 事务回滚或使用 Petapoco 提交?

来自分类Dev

从 SQL Server 中的审计表回滚事务的过程

来自分类Dev

DB2 SQL脚本:如何启动事务并在发生错误时回滚

来自分类Dev

SQL适配器可以处理事务(开始/插入/回滚)吗?

来自分类Dev

为什么即使回滚事务,SQL Server也会保持可变状态?

来自分类Dev

事务提交或回滚时如何尝试捕获或返回成功标志-SQL Server

来自分类Dev

如何在 (C#) ASP.NET 和 SQL Server 中回滚多个事务

来自分类Dev

SQL PHP回滚不起作用

来自分类Dev

SQL PHP回滚不起作用

来自分类Dev

回滚Sql Server 2008查询

来自分类Dev

JTA事务的回滚

来自分类Dev

HibernateTransactionManager回滚事务

来自分类Dev

通过回滚NUnit,SQL Server和UI测试中的事务来维护数据库已知状态的正确方法

来自分类Dev

如果没有错误,则提交事务;如果在Oracle SQL * plus中发生错误,则回滚

来自分类Dev

回滚插入到SQL Server 2005中的多个表

来自分类Dev

SQL Server即时回滚更改数据库

来自分类Dev

阻止SQL Server / EF执行自动回滚

来自分类Dev

计算SQL Sever 2008中的回滚数

来自分类Dev

如何回滚SQL Server数据库中的数据?

来自分类Dev

回滚已提交的事务

来自分类Dev

嵌套事务无法回滚

Related 相关文章

热门标签

归档