PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

ibase_wait_event> <ibase_timefmt
Last updated: Fri, 10 Oct 2008

view this page in

ibase_trans

(PHP 4, PHP 5)

ibase_transトランザクションを開始する

説明

resource ibase_trans ([ int $trans_args [, resource $link_identifier ]] )

トランザクションを開始します。

注意: この関数の挙動は PHP 5.0.0 で変更されました。The first call ibase_trans() を最初にコールした際には、接続の デフォルトのトランザクションを返しません。ibase_trans() によって開始されたすべてのトランザクションは、ibase_commit()ibase_rollback() を使用してコミットあるいは ロールバックを明示的に行わない限り、スクリプトの終了時に自動的に ロールバックされます。

注意: PHP 5.0.0 以降では、この関数は複数の trans_args および link_identifier を指定することが可能です。これにより、 複数のデータベース接続にまたがるトランザクションを扱えるようになり、 2 フェーズコミット機能を使用したコミットが可能になります。つまり、複数の データベースの更新内容が成功したか失敗したかによる判断ができるということです。 これは、ひとつのクエリで異なるデータベースのテーブルを同時に使用できるという ことではありません!
複数データベースにまたがるトランザクションを使用する場合、 ibase_query() および ibase_prepare() をコールする際には link_id および transaction_id の両方を指定する必要があります。

パラメータ

trans_args

trans_args は、以下の IBASE_READIBASE_WRITEIBASE_COMMITTEDIBASE_CONSISTENCYIBASE_CONCURRENCYIBASE_REC_VERSIONIBASE_REC_NO_VERSIONIBASE_WAIT および IBASE_NOWAIT の組み合わせとなります。

link_identifier

InterBase リンク ID。省略した場合は、 最後にオープンしたリンクを使用します。

返り値

トランザクションハンドル、あるいはエラー時に FALSE を返します。



add a note add a note User Contributed Notes
ibase_trans
Aaron Brundle
10-Nov-2005 07:06
Example of using ibase_trans with ibase_prepare and ibase_execute:

$dbh = ibase_connect( ... );
$sql =  " ... ";
$trans = ibase_trans( IBASE_DEFAULT,$dbh );
$sth = ibase_prepare( $trans, $sql );
$res = ibase_execute( $sth, $params_if_any );
if ($res == false) {
  //log failure if you want
}
ibase_commit($trans);
//free if needed
ibase_free_query($sth);
unset($res);
jon at tgpsolutions dot com
12-Jul-2002 10:56
When using transactions, you must execute queries using the transaction identifier as the link_identifier in ibase_query. 

Example:

$db = ibase_connect( ... );
$tr = ibase_trans();
$result = ibase_query($tr, $sql1);
$result = ibase_query($tr, $sql2);
ibase_rollback($tr);

You must use ibase_query($tr, $sql1).  Calling ibase_query($db, $sql1) will not allow you to roll back - it will be commited when the script finishes executing.

ibase_wait_event> <ibase_timefmt
Last updated: Fri, 10 Oct 2008
 
 
show source | credits | sitemap | contact | advertising | mirror sites