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

  • Android Authority

    Android Auth

    3 NİSAN 2011
  • Angry Paintballer

    Angry Paintb

    8 Ocak 2012
  • kamaniusilelis

    kamaniusilel

    10 HAZİRAN 2011