2024 年 PHP Conference Japan

oci_commit

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

oci_commit提交未完成的資料庫交易

說明

oci_commit(資源 $connection): 布林值

提交 Oracle 連線的未完成交易。提交動作會結束目前的交易,並使所有變更永久生效。它會釋放所有持有的鎖定。

當第一個修改資料的 SQL 陳述式使用 oci_execute() 並搭配 OCI_NO_AUTO_COMMIT 旗標執行時,交易便開始。其他陳述式所做的進一步資料更改將成為同一個交易的一部分。在交易中進行的資料更改是暫時的,直到交易被提交或回復為止。其他資料庫使用者在資料更改被提交之前將不會看到這些更改。

當插入或更新資料時,建議使用交易以確保關聯式資料的一致性並提升效能。

參數

connection(連線)

一個 Oracle 連線識別碼,由 oci_connect()oci_pconnect()oci_new_connect() 返回。

回傳值

成功時返回 true,失敗時返回 false

範例

範例 #1 oci_commit() 範例

<?php

// 插入多個資料表,如果發生錯誤則回復變更

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

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

// OCI_NO_AUTO_COMMIT 旗標告訴 Oracle 不要立即提交 INSERT
$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); // 將兩個資料表的變更都回復
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

// 提交兩個資料表的變更
$r = oci_commit($conn);
if (!
$r) {
$e = oci_error($conn);
trigger_error(htmlentities($e['message']), E_USER_ERROR);
}

?>

注意事項

備註:

當您關閉連線或腳本結束時(以先發生的時間為準),交易會自動回復。您需要明確呼叫 oci_commit() 函式來提交交易。

任何使用 OCI_COMMIT_ON_SUCCESS 模式(顯式或預設)呼叫 oci_execute() 函式都會提交任何先前未提交的交易。

任何 Oracle DDL 陳述式(例如 CREATEDROP)都會自動提交任何未提交的交易。

另請參閱

新增註記

使用者提供的註記

此頁面沒有使用者提供的註記。
To Top