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

  • Adam Outler

    Adam Outler

    19 EKİM 2006
  • nigahiga

    nigahiga

    21 Temmuz 2006
  • Numberphile

    Numberphile

    15 EYLÜL 2011