• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • ibase_trans()

    (PHP 5, PHP 7)

    Begin a transaction

    说明

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

    Begins a transaction.

    Note:

    The first call to ibase_trans() will not return the default transaction of a connection. All transactions started by ibase_trans() will be rolled back at the end of the script if they were not committed or rolled back by either ibase_commit() or ibase_rollback().

    Note:

    This function will accept multiple$trans_argsand$link_identifierarguments. This allows transactions over multiple database connections, which are committed using a 2-phase commit algorithm. This means you can rely on the updates to either succeed in every database, or fail in every database. It does NOT mean you can use tables from different databases in the same query!

    If you use transactions over multiple databases, you will have to specify both the$link_idand$transaction_idin calls to ibase_query() and ibase_prepare().

    参数

    $trans_args

    $trans_argscan be a combination of IBASE_READ,IBASE_WRITE,IBASE_COMMITTED,IBASE_CONSISTENCY,IBASE_CONCURRENCY,IBASE_REC_VERSION,IBASE_REC_NO_VERSION,IBASE_WAIT and IBASE_NOWAIT.

    $link_identifier

    An InterBase link identifier. If omitted, the last opened link is assumed.

    返回值

    Returns a transaction handle, or FALSE on error.

    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.
    Note that on some platforms ibase_trans($dbh), ibase_trans(IBASE_DEFAULT, $dbh) and ibase_trans($dbh, IBASE_DEFAULT) are not the same, but will run without errors in most cases.
    Prevent lock conflicts example:
    $db = ibase_connect( ... );
    $tr = ibase_trans(IBASE_COMMITTED + IBASE_NOWAIT, $db);
    $result = ibase_query($tr, $sql);
    ibase_commit($tr);
    ibase_close($dh);