[PHP-users 11614] Re: PHPでPostgreSQL のトランザクションを実行するには?
Genshirou Taki
php-users@php.gr.jp
Wed, 20 Nov 2002 10:39:36 +0900
ちょうどトランザクションの導入を検討しているg_takiです。
On Wed, 20 Nov 2002 10:08:58 +0900
Mashiki <mashiki@yanah.com> wrote:
> Mashikiです。
>
> phpからBeginを出し、psqlからrollbackするということは、
> できないでしょう。(無改造のphp、psqlからは)
>
> まさか、ブラウザからBeginとLockとInsertのみ含むphpを
> を実行し、確認画面をブラウザに出した後で、次の画面で
> commit or rollback したいということでしょうか。
>
> これは簡単にはできないです。かつ、しないほうがよいでしょう。
>
>
- ばっさり -
ということは、
以下のように関数にまとめてもだめだということですね。
(まだ構想を練っている段階なので、動作テストなどしておらず)
//$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
}
今googleで PHP トランザクション で検索したところ、
http://ns1.php.gr.jp/pipermail/php-users/2002-February/005581.html
によると、
大丈夫とういうような話も出ているようですが。