PHP – Postgresql ¿Cómo puedo revertir una consulta si está devolviendo un error?

Estoy haciendo un CRUD con php y postgres, y quiero saber si hay una manera de revertir la transacción si hay un error. en realidad, si recibo un error en la transacción, la identificación (clave principal) aumenta, entonces pierdo una identificación para el uso futuro.

¿Cómo puedo prevenirlo? Quiero decir, si la consulta del inserto falla, no haga el incremento automático en la tabla.

Estoy usando una clase para ejecutar las consultas:

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(); } 

La transacción se deshace. Pero todavía utilizará un número de una secuencia, en la que se basan automáticamente los valores incrementales. Esto es así por diseño y evita lockings de larga duración, lo que anularía el rendimiento de la ejecución paralela.

Hay algunas soluciones:

  • postgresql generar secuencia sin espacio