sqlsrv_commit

PHP sürücüsünü indirme

Belirtilen bağlantıda mevcut işlemi yapar ve bağlantıyı otomatik commit moduna geri döndürür. Mevcut işlem, sqlsrv_begin_transaction çağrısından sonra ve sqlsrv_rollback veya sqlsrv_commit çağrılarından önce gerçekleştirilen belirtilen bağlantıdaki tüm ifaları içerir.

Note

SQL Server için PHP için Microsoft Sürücüleri varsayılan olarak otomatik commit modundadır. Bu, sqlsrv_begin_transaction kullanılarak açık bir işlemin parçası olarak belirlenmediği sürece tüm sorguların otomatik olarak başarı üzerine işlendiği anlamına gelir.

Note

Eğer sqlsrv_commit , aktif bir işlemde olmayan ve sqlsrv_begin_transaction ile başlatılmış bir bağlantıda çağrılırsa, çağrı yanlış döndürür ve hata koleksiyonuna Not in Transaction hatası eklenir.

Syntax

  
sqlsrv_commit( resource $conn )  

Parametreler

$conn: İşlemin aktif olduğu bağlantı.

Dönüş Değeri

Bir Boolean değeri: işlem başarıyla gerçekleştirilmişse doğrudur . Aksi takdirde, yanlış.

Example

Aşağıdaki örnek, bir işlemin parçası olarak iki sorgu yürütülür. Her iki sorgu da başarılı olursa, işlem gerçekleşir. Eğer sorgulardan biri (veya her ikisi) başarısız olursa, işlem geri alınır.

Örnekteki ilk sorgu, AdventureWorks veritabanındaki Sales.SalesOrderDetail tablosuna yeni bir satış siparişi ekler. Sipariş, ürün ID'si 709 olan beş ünite içindir. İkinci sorgu, ürün ID 709'un envanter miktarını beş birim azaltıyor. Bu sorgular, veritabanının siparişlerin durumunu ve ürün kullanılabilirliğini doğru şekilde yansıtabilmesi için her iki sorgunun da başarılı olması gerektiği için işlem içinde dahil edilir.

Örnekte SQL Server ve AdventureWorks veritabanının yerel bilgisayarda yüklü olduğu varsayılır. Örnek komut satırından çalıştırıldığında tüm çıkış konsola yazılır.

<?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);  
?>  

İşlem davranışına odaklanmak amacıyla, önerilen bazı hata işleme önceki örnekte yer almamıştır. Bir üretim uygulaması için, sqlsrv fonksiyonuna yapılan herhangi bir çağrının hata açısından kontrol edilmesi ve buna göre ele alınması önerilir.

Note

İşlemleri gerçekleştirmek için eklenmiş Transact-SQL kullanmayın. Örneğin, bir işlemi başlatmak için Transact-SQL sorgusu olarak "BEGIN TRANSACTION" içeren bir deyim yürütmeyin. Beklenen işlemsel davranış, gömülü Transact-SQL işlemler yaparken garanti edilemez.