本文主要为您介绍局部事务相关接口。

StartLocalTransaction

创建事务,获取事务ID(分区级别的事务)。

接口
    /**
     * 开始事务,获取事务ID。
     * @api
     * @param [] $request
     *            请求参数,表名、分区键。
     * @return [] 请求返回
     * @throws OTSClientException 当参数检查出错或服务端返回校验出错时
     * @throws OTSServerException 当OTS服务端返回错误时
     * @example "src/examples/StartLocalTransaction.php" 50
     */
    public function startLocalTransaction(array $request)
示例
$response = $this->otsClient->startLocalTransaction (array (
    'table_name' => 'TransactionTable',
    'key' => array(  //主键 [PK0:INTEGER,PK1:STRING]
        array('PK0', 0)
    )
));

获取事务ID后,PutRow、UpdateRow、BatchWriteRow时携带事务ID请求。

$updateRequest = array(
    'table_name' => 'TransactionTable',
    'condition' => RowExistenceExpectationConst::CONST_IGNORE,
    'primary_key' => array (
        array('PK0', 0),
        array('PK1', '1')
    ),
    'update_of_attribute_columns'=> array(
        'PUT' => array (
            array('attr0', 'new value')
        )
    ),
    'transaction_id' => $response['transaction_id']
);
$this->otsClient->updateRow($updateRequest);

CommitTransaction

提交事务

接口
    /**
     * 提交事务。
     * @api
     *
     * @param [] $request
     *            请求参数,表名。
     * @return [] 请求返回
     * @throws OTSClientException 当参数检查出错或服务端返回校验出错时
     * @throws OTSServerException 当OTS服务端返回错误时
     * @example "src/examples/CommitTransaction.php" 50
     */
    public function commitTransaction(array $request)
示例
$this->otsClient->commitTransaction(array(
    'transaction_id' => $response['transaction_id']
));

AbortTransaction

舍弃事务,携带次事务ID的所有请求都会被舍弃。

接口
    /**
     * 舍弃事务。
     * @api
     *
     * @param [] $request
     *          请求参数,事务ID。
     * @return [] 请求返回
     * @throws OTSClientException 当参数检查出错或服务端返回校验出错时
     * @throws OTSServerException 当OTS服务端返回错误时
     * @example "src/examples/AbortTransaction.php" 20
     */
    public function abortTransaction(array $request)
示例
$this->otsClient->abortTransaction(array(
    'transaction_id' => $response['transaction_id']
));