首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

sqlsrv_begin_transaction

(没有可用的版本信息,可能只在Git中)

sqlsrv_begin_transaction — 开始数据库事务

描述

代码语言:javascript
复制
bool sqlsrv_begin_transaction ( resource $conn )

sqlsrv_begin_transaction()开始的事务包括在调用sqlsrv_begin_transaction()之后和调用sqlsrv_rollback()或sqlsrv_commit()之前执行的所有语句。应该使用这些函数启动并提交或回滚显式事务,而不是执行开始和提交/回滚事务的SQL语句。有关更多信息,请参阅?SQLSRV事务

参数

conn

由调用sqlsrv_connect()返回的连接资源。

返回值

成功时返回TRUE或失败时返回FALSE

例子

示例#1 sqlsrv_begin_transaction()示例

以下示例演示如何将sqlsrv_begin_transaction()与sqlsrv_commit()和sqlsrv_rollback()一起使用。

代码语言:javascript
复制
<?php
$serverName?=?"serverName\sqlexpress";
$connectionInfo?=?array(?"Database"=>"dbName",?"UID"=>"userName",?"PWD"=>"password");
$conn?=?sqlsrv_connect(?$serverName,?$connectionInfo);
if(?$conn?===?false?)?{
????die(?print_r(?sqlsrv_errors(),?true?));
}

/*?Begin?the?transaction.?*/
if?(?sqlsrv_begin_transaction(?$conn?)?===?false?)?{
?????die(?print_r(?sqlsrv_errors(),?true?));
}

/*?Initialize?parameter?values.?*/
$orderId?=?1;?$qty?=?10;?$productId?=?100;

/*?Set?up?and?execute?the?first?query.?*/
$sql1?=?"INSERT?INTO?OrdersTable?(ID,?Quantity,?ProductID)
??????????VALUES?(?,??,??)";
$params1?=?array(?$orderId,?$qty,?$productId?);
$stmt1?=?sqlsrv_query(?$conn,?$sql1,?$params1?);

/*?Set?up?and?execute?the?second?query.?*/
$sql2?=?"UPDATE?InventoryTable?
??????????SET?Quantity?=?(Quantity?-??)?
??????????WHERE?ProductID?=??";
$params2?=?array($qty,?$productId);
$stmt2?=?sqlsrv_query(?$conn,?$sql2,?$params2?);

/*?If?both?queries?were?successful,?commit?the?transaction.?*/
/*?Otherwise,?rollback?the?transaction.?*/
if(?$stmt1?&&?$stmt2?)?{
?????sqlsrv_commit(?$conn?);
?????echo?"Transaction?committed.<br?/>";
}?else?{
?????sqlsrv_rollback(?$conn?);
?????echo?"Transaction?rolled?back.<br?/>";
}
?>

扫码关注腾讯云开发者

领取腾讯云代金券

http://www.vxiaotou.com