是的,PHP PostgreSQL 支持事務處理。事務是一組原子性的 SQL 查詢,要么全部執行成功,要么全部失敗回滾。在 PHP 中,可以使用 pg_query() 或 pg_prepare() 和 pg_execute() 函數來執行事務處理。
以下是一個簡單的 PHP PostgreSQL 事務處理示例:
<?php
// 連接到 PostgreSQL 數據庫
$dbconn = pg_connect("host=localhost dbname=mydb user=myuser password=mypassword");
if (!$dbconn) {
die("Connection to PostgreSQL failed: " . pg_last_error());
}
// 開始事務處理
pg_begin($dbconn);
try {
// 執行 SQL 查詢
$result1 = pg_query($dbconn, "SELECT * FROM table1 WHERE id=1");
if (!$result1) {
throw new Exception("Error executing query 1: " . pg_last_error());
}
$result2 = pg_query($dbconn, "UPDATE table2 SET value='new_value' WHERE id=1");
if (!$result2) {
throw new Exception("Error executing query 2: " . pg_last_error());
}
// 提交事務處理
pg_commit($dbconn);
} catch (Exception $e) {
// 發生錯誤時回滾事務處理
echo "Transaction failed: " . $e->getMessage();
pg_rollback($dbconn);
} finally {
// 關閉數據庫連接
pg_close($dbconn);
}
?>
在這個示例中,我們首先連接到 PostgreSQL 數據庫,然后開始事務處理。接下來,我們執行兩個 SQL 查詢,一個從表 table1 中獲取數據,另一個更新表 table2 中的數據。如果所有查詢都成功執行,我們將提交事務處理;如果有任何查詢失敗,我們將捕獲異常并回滾事務處理。最后,我們關閉數據庫連接。