PHP - Postgresql 如果返回错误,我如何回滚查询?

PHP - Postgresql How I can rollback a query if is returning error?

我正在使用 php 和 postgres 进行增删改查,我想知道是否有办法在出现错误时回滚事务。 实际上,如果我在事务中遇到错误,id(主键)会增加,那么我将丢失一个 id 以备将来使用。

我该如何预防?我的意思是,如果 Insert 的查询失败,请不要在 table.

中进行自动递增

我正在使用 class 来执行查询:

public function insertRecord ($data){
        $campos =$this->getTableFields();
        $data =implode ("', '", $data);
        $sql ="INSERT INTO {$this->table} ($campos) VALUES (";
        $sysData =$this->getDefaultValues();
        if($sysData){
            $sysData .= ",";
            $sql .="$sysData ";
        }
        $sql .="'$data') RETURNING {$this->campoId};";
        echo $sql;
        pg_query($this->linkid,$sql);
        return $this->validateOperation();
    }

交易回滚。但它仍然会用完序列中的一个数字,自动递增值基于该序列。这是设计使然,可防止持久锁定,这会降低并行执行性能。

有一些解决方法:

  • postgresql generate sequence with no gap