oci_commit

(PHP 5, PHP 7, PHP 8, PECL OCI8 >= 1.1.0)

oci_commitConfirma a transação de banco de dados pendente

Descrição

oci_commit(resource $connection): bool

Confirma a transação pendente para a conexção Oracle informada em connection. Uma confirmação encerra a transação atual e torna permanentes todas as alterações. Ela libera todos os bloqueios mantidos.

Uma transação começa quando a primeira instrução SQL que altera os dados é executada com oci_execute() usando o sinalizador OCI_NO_AUTO_COMMIT. Outras alterações de dados feitas por outras instruções se tornam parte da mesma transação. As alterações de dados feitas em uma transação são temporárias até que a transação seja confirmada ou revertida. Outros usuários do banco de dados não verão as alterações até que sejam confirmadas.

Ao inserir ou atualizar dados, é recomendado usar transações para consistência de dados relacionais e por motivos de desempenho.

Parâmetros

connection

Um identificador de conexão Oracle, retornado por oci_connect(), oci_pconnect() ou oci_new_connect().

Valor Retornado

Retorna true em caso de sucesso ou false em caso de falha.

Exemplos

Exemplo #1 Exemplo de oci_commit()

<?php

// Inserindo em várias tabelas, revertendo as alterações se ocorrer um erro

$conn = oci_connect('hr', 'welcome', 'localhost/XE');

$stid = oci_parse($conn, "INSERT INTO mysalary (id, name) VALUES (1, 'Chris')");

// O sinalizador OCI_NO_AUTO_COMMIT informa ao Oracle para não confirmar o INSERT imediatamente
$r = oci_execute($stid, OCI_NO_AUTO_COMMIT);
if (!
$r) {
$e = oci_error($stid);
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

$stid = oci_parse($conn, 'INSERT INTO myschedule (startday) VALUES (12)');
$r = oci_execute($stid, OCI_NO_AUTO_COMMIT);
if (!
$r) {
$e = oci_error($stid);
oci_rollback($conn); // reverte alterações em ambas as tabelas
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

// Confirma as alterações em ambas as tabelas
$r = oci_commit($conn);
if (!
$r) {
$e = oci_error($conn);
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

?>

Notas

Nota:

As transações são automaticamente revertidas quando você fecha a conexão, ou quando o script termina, o que ocorrer primeiro. Você precisa chamar explicitamente oci_commit() para confirmar a transação.

Qualquer chamada para oci_execute() que use o modo OCI_COMMIT_ON_SUCCESS explicitamente ou por padrão confirmará qualquer transação anterior não confirmada.

Qualquer instrução Oracle DDL como CREATE ou DROP confirmará automaticamente qualquer transação não confirmada.

Veja Também