MSSQL中的事務是否鎖定表?如果是這樣,那麼在整個交易期間持有的鎖或者僅在執行語句期間持有鎖。下面是一個例子的事務(忽略任何語法錯誤)MSSQL中的事務是否鎖定表
if (sqlsrv_begin_transaction($dbConnection) === false) {
die(print_r(sqlsrv_errors(), true));
}
$query = "INSERT INTO order_table (name,description,created_at) VALUES ('test_name','test_Transaction','some_date')";
$stmt1 = sqlsrv_query($dbConnection ,$query) or die('MSSQL error: ' . mssql_get_last_message());
$query = "INSERT INTO other_details_table (order_id,details) VALUES ('1234','order_details')";
$stmt2 = sqlsrv_query($dbConnection ,$query) or die('MSSQL error: ' . mssql_get_last_message());
sleep('20'); // used to delay the transaction time
/* 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 />";
}
當上述交易是在過程中,我試圖在以表「order_table」插入一個記錄,它成功地插入。如何鎖定Transaction中的表並在提交或回滾之後將其解鎖。
交易隱藏了其他用戶的相關新記錄,直到交易提交。任何人在睡覺時對這些表進行選擇都不會看到新的數據。 –
看起來像一個重複:http://stackoverflow.com/questions/9842253/lock-table-while-inserting – FLICKER