[PHP-users 11616] Re: PHPでPostgreSQL のトランザクションを実行するには?

Mashiki php-users@php.gr.jp
Wed, 20 Nov 2002 11:07:15 +0900


 Mashikiです。

>ということは、
>以下のように関数にまとめてもだめだということですね。
>(まだ構想を練っている段階なので、動作テストなどしておらず)
>
>//$sql は配列でトランザクション内で実行したいSQL文字列
>function lock($sql){
>$temp_sql = "BEGIN;";
>$rs = pg_query($db_con, $temp_sql);
>
>$temp_sql = "LOCK TABLE hoge_table IN ACCESS EXCLUSIVE MODE;";
>$rs = pg_query($db_con, $temp_sql);
>
>foreach($sql){
>//ここでSQLをまとめて実行
>	$rs = pg_query($db_con, $sql);
>	if(!$rs) break;
>}
>
>if($rs){
>	コミット
>}else{
>	ロールバック
>}
>//return true or false
>}

これは普通の使い方なので問題ないです。

元質問者はphpでBEGINを出し、psqlでROLLBACKしようとしているので、
先の文脈になったわけです。