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

  • Jack Vale Films

    Jack Vale Fi

    8 ŞUBAT 2007
  • Neil Cicierega

    Neil Ciciere

    22 Mart 2006
  • stewmurray47

    stewmurray47

    1 Kasım 2006