PHP 8.4.6 Released!

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

adicione uma nota

Notas Enviadas por Usuários (em inglês)

Não há notas de usuários para esta página.
To Top