PHPでPostgreSQLのトランザクション処理を実装する方法
よく使う実装方法になりますので、今回はPHPでPostgreSQLのトランザクション処理を紹介します。
ソースコード
$host = 'localhost';
$dbName = 'db_name';
$user = 'user';
$pass = 'password';
$connectInfo = "host={$host} dbname={$dbName} user={$user} password={$pass}";
$connection = pg_connect($connectInfo);
if ($connection === false) {
return '接続失敗エラー';
}
pg_query("BEGIN"); //トランザクション開始
$sql = 'select * from table';
$selectResult = pg_query($connection, $sql);
if ($selectResult === false) {
pg_query("ROLLBACK");
}
$result = pg_fetch_all($selectResult);
// 結果を出力
print_r($result);
pg_query("COMMIT");
pg_close($connection);
トランザクションの開始方法
pg_query("BEGIN");
※これがないと、自動コミットになってしまう。特にテーブルに対する変更(INSERT、UPDATE、DELECT)が要注意だ。
ロールバック方法
pg_query("ROLLBACK");
※「pg_query("BEGIN");」がないと、これが効かない。
コミット
pg_query("COMMIT");
※トランザクション処理が完了したという意味である。
トランザクション処理が完了したら、コネクションのお始末をしたほうがいいでしょう
pg_close($connection);
以上です。