精品国产亚洲一区二区三区,男女作爱在线观看免费网站,欧美的又大又长做禁片A片,97国产精品人妻无码久久久

  • 相關(guān)軟件
    >COMMIT TRANSACTION 創(chuàng)建者:webmaster 更新時間:2006-02-16 15:51

    標(biāo)志一個成功的隱性事務(wù)或用戶定義事務(wù)的結(jié)束。如果 @@TRANCOUNT 為 1,COMMIT TRANSACTION 使得自從事務(wù)開始以來所執(zhí)行的所有數(shù)據(jù)修改成為數(shù)據(jù)庫的永久部分,釋放連接占用的資源,并將 @@TRANCOUNT 減少到 0。如果 @@TRANCOUNT 大于 1,則 COMMIT TRANSACTION 使 @@TRANCOUNT 按 1 遞減。



    語法


    COMMIT [ TRAN [ SACTION ] [ transaction_name | @tran_name_variable ] ]



    參數(shù)


    transaction_name



    Microsoft® SQL Server™ 忽略該參數(shù)。transaction_name 指定由前面的 BEGIN TRANSACTION 指派的事務(wù)名稱。transaction_name 必須遵循標(biāo)識符的規(guī)則,但只使用事務(wù)名稱的前 32 個字符。通過向程序員指明 COMMIT TRANSACTION 與哪些嵌套的 BEGIN TRANSACTION 相關(guān)聯(lián),transaction_name 可作為幫助閱讀的一種方法。



    @tran_name_variable



    是用戶定義的、含有有效事務(wù)名稱的變量的名稱。必須用 charvarchar、ncharnvarchar 數(shù)據(jù)類型聲明該變量。



    注釋


    只有當(dāng)事務(wù)所引用的所有數(shù)據(jù)的邏輯都正確時,發(fā)出 COMMIT TRANSACTION 命令才是一個 Transact-SQL 程序員的職責(zé)。



    如果所提交的事務(wù)是 Transact-SQL 分布式事務(wù),COMMIT TRANSACTION 將觸發(fā) MS DTC 使用兩階段提交協(xié)議,以便提交所有涉及該事務(wù)的服務(wù)器。如果局部事務(wù)跨越同一服務(wù)器上的兩個或多個數(shù)據(jù)庫,那么 SQL Server 將使用內(nèi)部的兩階段提交來提交所有涉及該事務(wù)的數(shù)據(jù)庫。



    當(dāng)在嵌套事務(wù)中使用時,內(nèi)部事務(wù)的提交并不釋放資源或使其修改成為永久修改。只有在提交了外部事務(wù)時,數(shù)據(jù)修改才具有永久性,而且資源才會被釋放。當(dāng) @@TRANCOUNT 大于 1 時,每發(fā)出一個 COMMIT TRANSACTION 命令就會使 @@TRANCOUNT 按 1 遞減。當(dāng) @@TRANCOUNT 最終減少到 0 時,將提交整個外部事務(wù)。因為 transaction_name 被 SQL Server 忽略,所以當(dāng)存在僅將 @@TRANCOUNT 按 1 遞減的顯著內(nèi)部事務(wù)時,發(fā)出一個引用外部事務(wù)名稱的 COMMIT TRANSACTION。



    當(dāng) @@TRANCOUNT 為 0 時發(fā)出 COMMIT TRANSACTION 將會導(dǎo)致出現(xiàn)錯誤,因為沒有相應(yīng)的 BEGIN TRANSACTION。



    不能在發(fā)出一個 COMMIT TRANSACTION 語句之后回滾事務(wù),因為數(shù)據(jù)修改已經(jīng)成為數(shù)據(jù)庫的一個永久部分。



    示例


    A. 提交事務(wù)。


    下面的示例在圖書的截止當(dāng)前銷售額超過 $8,000 時,增加支付給作者的預(yù)付款。



    BEGIN TRANSACTION
    USE pubs
    GO
    UPDATE titles
    SET advance = advance * 1.25
    WHERE ytd_sales > 8000
    GO
    COMMIT
    GO


    B. 提交嵌套事務(wù)。


    下面的示例創(chuàng)建一個表,生成三個級別的嵌套事務(wù),然后提交該嵌套事務(wù)。盡管每個 COMMIT TRANSACTION 語句都有一個 transaction_name 參數(shù),但是 COMMIT TRANSACTION 和 BEGIN TRANSACTION 語句之間沒有任何關(guān)系。transaction_name 參數(shù)僅是幫助閱讀的方法,可幫助程序員確保提交的正確號碼被編碼以便將 @@TRANCOUNT 減少到 0,然后提交外部事務(wù)。



    CREATE TABLE TestTran (Cola INT PRIMARY KEY, Colb CHAR(3))
    GO
    BEGIN TRANSACTION OuterTran -- @@TRANCOUNT set to 1.
    GO
    INSERT INTO TestTran VALUES (1, 'aaa')
    GO
    BEGIN TRANSACTION Inner1 -- @@TRANCOUNT set to 2.
    GO
    INSERT INTO TestTran VALUES (2, 'bbb')
    GO
    BEGIN TRANSACTION Inner2 -- @@TRANCOUNT set to 3.
    GO
    INSERT INTO TestTran VALUES (3, 'ccc')
    GO
    COMMIT TRANSACTION Inner2 -- Decrements @@TRANCOUNT to 2.
    -- Nothing committed.
    GO
    COMMIT TRANSACTION Inner1 -- Decrements @@TRANCOUNT to 1.
    -- Nothing committed.
    GO
    COMMIT TRANSACTION OuterTran -- Decrements @@TRANCOUNT to 0.
    -- Commits outer transaction OuterTran.
    GO
    相關(guān)文章
    本頁查看次數(shù):