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
我正在使用 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