SORU
17 Kasım 2009, Salı


SQL Server - işlem hatası geri?

SQL Server 2005 aşağıdaki gibi: bazı SQL çalıştıran bir istemci uygulaması var

BEGIN TRAN;
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
COMMIT TRAN;

Uzun bir dizi komut tarafından gönderilir.

Ekler biri başarısız, ya da komut herhangi bir kısmı başarısız olursa, SQL Server geri hareket ediyor mu? Eğer geri gelirse, rulo için ikinci bir komut göndermek gerekiyor mu geri?

Kullanıyorum apı ve dili hakkında detayları verebilirim, ama SQL Server herhangi bir dil için aynı tepki vermesi gerektiğini düşünüyorum.

CEVAP
17 Kasım 2009, Salı


Tüm işlem geri alınır, bu doğru. Onu geri almak için komut vermek gerekir.

Aşağıdaki gibi TRY CATCH blok bu sarabilirsiniz

BEGIN TRY
    BEGIN TRANSACTION

        INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
        INSERT INTO myTable (myColumns ...) VALUES (myValues ...);
        INSERT INTO myTable (myColumns ...) VALUES (myValues ...);

    COMMIT TRAN -- Transaction Success!
END TRY
BEGIN CATCH
    IF @@TRANCOUNT > 0
        ROLLBACK TRAN --RollBack in case of Error

    -- you can Raise ERROR with RAISEERROR() Statement including the details of the exception
    RAISERROR(ERROR_MESSAGE(), ERROR_SEVERITY(), 1)
END CATCH

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Canal de arkyoru

    Canal de ark

    18 Ocak 2007
  • MagmaRhino

    MagmaRhino

    16 Temmuz 2011
  • SketchBookPro

    SketchBookPr

    6 Mayıs 2009