ibase_trans

(PHP 5, PHP 7 < 7.4.0)

ibase_trans开始事务

描述

ibase_trans(int $trans_args = ?, resource $link_identifier = ?): resource
ibase_trans(resource $link_identifier = ?, int $trans_args = ?): resource

开始一个事务。

注意:

ibase_trans() 的第一次调用不会返回连接的默认事务。所有由 ibase_trans() 启动的事务将在脚本结束时回滚,如果它们没有被 ibase_commit()ibase_rollback() 提交或回滚。

注意:

此函数将接受多个 trans_argslink_identifier 参数。这允许跨多个数据库连接进行事务,这些事务使用两阶段提交算法提交。这意味着您可以依赖更新在每个数据库中都成功,或者在每个数据库中都失败。但这并不意味着您可以在同一个查询中使用来自不同数据库的表!

如果您对多个数据库使用事务,则必须在调用 ibase_query()ibase_prepare() 时指定 link_idtransaction_id

参数

trans_args

trans_args 可以是 IBASE_READIBASE_WRITEIBASE_COMMITTEDIBASE_CONSISTENCYIBASE_CONCURRENCYIBASE_REC_VERSIONIBASE_REC_NO_VERSIONIBASE_WAITIBASE_NOWAIT 的组合。

link_identifier

一个 InterBase 连接标识符。如果省略,则假定最后一个打开的连接。

返回值

返回一个事务句柄,或者在发生错误时返回 false

添加说明

用户贡献说明 3 个说明

3
jon at tgpsolutions dot com
22 年前
使用事务时,您必须使用事务标识符作为 ibase_query 中的 link_identifier 来执行查询。

示例

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

您必须使用 ibase_query($tr, $sql1)。调用 ibase_query($db, $sql1) 将不允许您回滚 - 它将在脚本执行完毕后提交。
2
marti at delfos dot net
6 年前
防止锁冲突示例

$db = ibase_connect( ... );
$tr = ibase_trans(IBASE_COMMITTED + IBASE_NOWAIT, $db);
$result = ibase_query($tr, $sql);
ibase_commit($tr);
ibase_close($dh);
2
chAlx
12 年前
请注意,在某些平台上,ibase_trans($dbh)、ibase_trans(IBASE_DEFAULT, $dbh) 和 ibase_trans($dbh, IBASE_DEFAULT) 并不相同,但在大多数情况下会运行而不会出现错误。
To Top