始めに
こんにちは。新人エンジニアの打越です。
現場に配属されて2か月。現在は、主にPHPを業務の中で学んでおります。まだ配属されて間もないこの2か月の間、プログラムの仕組みをイメージすることに何度も苦戦しました。その中でも、苦戦したこと…「トランザクション制御」について今回は記事にしました。
トランザクション制御とは
トランザクション制御について調査してみた感想
私の感想「なにそれ、、、おいしいの?」
決して説明が悪いわけではありません。新人エンジニアの私は、イメージができなかったのです。調査を繰り返しても、様々な情報で溢れ、頭が混乱してしまいました。
そんな私は、現場で使われているPHP+PostgreSQLのコードを読み進めることでイメージできるようになりました。なので、一つ一つのコードで何を処理しているのか確認しながら、トランザクション制御についてイメージしていきましょう。
PHP+PostgreSQLが分からない方も安心してください。今回は、トランザクション制御がイメージできるようになることが目的です。
PHP+PostgreSQLのコードからトランザクション制御を読み解く
トランザクション制御とは一連の流れを表す
「begin」から行っている処理の途中で、トラブルが発生した場合、「rollback」で「begin」の前の状態に戻る。正常に処理が進んだ場合、「commit」で「begin」から行っている処理を確定する。
この一連の流れをトランザクション制御といいます。この流れをコードを見ながら理解していきましょう。
トランザクション制御を行っているPHP+PostgreSQLのコード
今回は、以下の手順で処理をする想定でトランザクションの確認をしようと思います。
データを削除する
データを追加する
なお、SQLのinsert文とdelete文は処理内容を省略しております。(insert …,delete…という文にしております)
<?php
$conn = pg_pconnect("dbname=publisher");//”publisher”という名前のデータベースに接続する
if (!$conn) {
echo "An error occurred.";
exit;
}//接続に失敗した場合、 "An error occurred."と表示する
pg_query($conn,"begin");//トランザクション開始する
$result = pg_query($conn,"delete ...");//delete...を実行する
if(!$result){
pg_query($conn,"rollback");
pg_close($conn);
exit;
}//トランザクションが失敗した場合、トランザクション開始直前の状態に戻る
$result = pg_query($conn,"insert ...");//insert...を実行する
if(!$result){
pg_query($conn,"rollback");
pg_close($conn);
exit;
}//トランザクションが失敗した場合、トランザクション開始直前の状態に戻る
pg_query($db->conn,"commit");//トランザクションを確定する
pg_freeResult($result);
pg_close($conn);//データベースとの接続を切断する
?>
最後に
今回は、トランザクション制御についてPHP+PostgreSQLのコードの流れに沿って学んでいきました。
日々目まぐるしいほどインプットされるIT用語たち。理解する方法はたくさんあります。
自分に合った理解の仕方を一緒に探していきましょう!
参考
トランザクション制御|KENスクールブログ
PHP:Postgre関数 - Manual
データの取得(SELECT) - Postgreへの接続 - PHP入門