[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しようとしているので、
先の文脈になったわけです。