kyoagunのブログ

技術系、PdMについてを書いていこうと思います。

PHPでPostgreSQLのトランザクション処理を実装する方法

よく使う実装方法になりますので、今回はPHPPostgreSQLトランザクション処理を紹介します。

ソースコード

$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);

以上です。