Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Menerapkan transaksi saat ini pada koneksi yang ditentukan dan mengembalikan koneksi ke mode penerapan otomatis. Transaksi saat ini mencakup semua pernyataan pada koneksi yang ditentukan yang dijalankan setelah panggilan ke sqlsrv_begin_transaction dan sebelum panggilan ke sqlsrv_rollback atau sqlsrv_commit.
Catatan
Driver Microsoft untuk PHP untuk SQL Server berada dalam mode penerapan otomatis secara default. Ini berarti bahwa semua kueri secara otomatis diterapkan setelah berhasil kecuali telah ditetapkan sebagai bagian dari transaksi eksplisit dengan menggunakan sqlsrv_begin_transaction.
Catatan
Jika sqlsrv_commit dipanggil pada koneksi yang tidak berada dalam transaksi aktif dan yang dimulai dengan sqlsrv_begin_transaction, panggilan mengembalikan false dan kesalahan Tidak dalam Transaksi ditambahkan ke kumpulan kesalahan.
Sintaks
sqlsrv_commit( resource $conn )
Parameter
$conn: Koneksi tempat transaksi aktif.
Tampilkan Nilai
Nilai Boolean: true jika transaksi berhasil dilakukan. Jika tidak, salah.
Contoh
Contoh di bawah ini menjalankan dua kueri sebagai bagian dari transaksi. Jika kedua kueri berhasil, transaksi dilakukan. Jika (atau kedua) kueri gagal, transaksi akan digulung balik.
Kueri pertama dalam contoh menyisipkan pesanan penjualan baru ke dalam tabel Sales.SalesOrderDetail database AdventureWorks. Pesanan tersebut untuk lima unit produk yang memiliki ID produk 709. Kueri kedua mengurangi kuantitas inventaritas ID produk 709 sebanyak lima unit. Kueri ini disertakan dalam transaksi karena kedua kueri harus berhasil bagi database untuk secara akurat mencerminkan status pesanan dan ketersediaan produk.
Contoh mengasumsikan bahwa SQL Server dan database AdventureWorks diinstal di komputer lokal. Semua output ditulis ke konsol saat contoh dijalankan dari baris perintah.
<?php
/* Connect to the local server using Windows Authentication and
specify the AdventureWorks database as the database in use. */
$serverName = "(local)";
$connectionInfo = array( "Database"=>"AdventureWorks");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
if( $conn === false )
{
echo "Could not connect.\n";
die( print_r( sqlsrv_errors(), true ));
}
/* Initiate transaction. */
/* Exit script if transaction cannot be initiated. */
if (sqlsrv_begin_transaction( $conn) === false)
{
echo "Could not begin transaction.\n";
die( print_r( sqlsrv_errors(), true ));
}
/* Initialize parameter values. */
$orderId = 43659; $qty = 5; $productId = 709;
$offerId = 1; $price = 5.70;
/* Set up and execute the first query. */
$tsql1 = "INSERT INTO Sales.SalesOrderDetail
(SalesOrderID,
OrderQty,
ProductID,
SpecialOfferID,
UnitPrice)
VALUES (?, ?, ?, ?, ?)";
$params1 = array( $orderId, $qty, $productId, $offerId, $price);
$stmt1 = sqlsrv_query( $conn, $tsql1, $params1 );
/* Set up and execute the second query. */
$tsql2 = "UPDATE Production.ProductInventory
SET Quantity = (Quantity - ?)
WHERE ProductID = ?";
$params2 = array($qty, $productId);
$stmt2 = sqlsrv_query( $conn, $tsql2, $params2 );
/* If both queries were successful, commit the transaction. */
/* Otherwise, rollback the transaction. */
if( $stmt1 && $stmt2 )
{
sqlsrv_commit( $conn );
echo "Transaction was committed.\n";
}
else
{
sqlsrv_rollback( $conn );
echo "Transaction was rolled back.\n";
}
/* Free statement and connection resources. */
sqlsrv_free_stmt( $stmt1);
sqlsrv_free_stmt( $stmt2);
sqlsrv_close( $conn);
?>
Untuk tujuan berfokus pada perilaku transaksi, beberapa penanganan kesalahan yang direkomendasikan tidak termasuk dalam contoh sebelumnya. Untuk aplikasi produksi, disarankan agar setiap panggilan ke fungsi sqlsrv diperiksa kesalahannya dan ditangani dengan sesuai.
Catatan
Jangan gunakan Transact-SQL yang disematkan untuk melakukan transaksi. Misalnya, jangan jalankan pernyataan dengan "BEGIN TRANSACTION" sebagai kueri Transact-SQL untuk memulai transaksi. Perilaku transaksi yang diharapkan tidak dapat dijamin saat menggunakan Transact-SQL yang disematkan untuk melakukan transaksi.