(PECL ibm_db2 >= 1.0.0)
db2_rollback — Reverte uma transação
Reverte uma transação em andamento no recurso de conexão especificado e inicia uma nova transação. As aplicações PHP normalmente usam o modo AUTOCOMMIT por padrão, então db2_rollback() normalmente não tem efeito, a menos que AUTOCOMMIT tenha sido desativado para o recurso de conexão.
connection
Uma variável de recurso de conexão de banco de dados válida, conforme retornada de db2_connect() ou db2_pconnect().
Exemplo #1 Revertendo uma instrução DELETE
No exemplo a seguir, contamos o número de linhas em uma tabela, desligamos
o modo AUTOCOMMIT em uma conexão de banco de dados, excluímos todas as linhas
na tabela e retornamos a contagem de 0
para provar que as
linhas foram removidas. Em seguida, emitimos db2_rollback()
e retornamos a contagem atualizada de linhas na tabela para mostrar que o número
é o mesmo de antes de emitirmos a instrução DELETE. O retorno ao
estado original da tabela demonstra que a reversão da
transação foi bem-sucedida.
<?php
$conn = db2_connect($database, $user, $password);
if ($conn) {
$stmt = db2_exec($conn, "SELECT count(*) FROM animals");
$res = db2_fetch_array( $stmt );
echo $res[0] . "\n";
// Desliga AUTOCOMMIT
db2_autocommit($conn, DB2_AUTOCOMMIT_OFF);
// Exclui todas as linhas de ANIMAIS
db2_exec($conn, "DELETE FROM animals");
$stmt = db2_exec($conn, "SELECT count(*) FROM animals");
$res = db2_fetch_array( $stmt );
echo $res[0] . "\n";
// Reverte a instrução DELETE
db2_rollback( $conn );
$stmt = db2_exec( $conn, "SELECT count(*) FROM animals" );
$res = db2_fetch_array( $stmt );
echo $res[0] . "\n";
db2_close($conn);
}
?>
O exemplo acima produzirá:
7 0 7