Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak wycofać lub zatwierdzić transakcję w SQL Server

Dobrą wiadomością jest to, że transakcja w SQL Server może obejmować wiele partii (każdy exec jest traktowana jako oddzielna partia).

Możesz zawinąć swój EXEC oświadczenia w BEGIN TRANSACTION i COMMIT ale musisz pójść o krok dalej i wycofać, jeśli wystąpią jakiekolwiek błędy.

Idealnie byłoby coś takiego:

BEGIN TRY
    BEGIN TRANSACTION 
        exec( @sqlHeader)
        exec(@sqlTotals)
        exec(@sqlLine)
    COMMIT
END TRY
BEGIN CATCH

    IF @@TRANCOUNT > 0
        ROLLBACK
END CATCH

BEGIN TRANSACTION i COMMIT Wierzę, że już znasz. BEGIN TRY i BEGIN CATCH bloki są w zasadzie po to, aby wyłapywać i radzić sobie z pojawiającymi się błędami. Jeśli którykolwiek z Twoich EXEC instrukcje zgłaszają błąd, wykonanie kodu przeskoczy do CATCH blok.

Twój istniejący kod budowania SQL powinien znajdować się poza transakcją (powyżej), ponieważ zawsze chcesz, aby transakcje były jak najkrótsze.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmień kolumnę numeru

  2. Jak robisz wersjonowanie w Nhibernate?

  3. 6 sposobów sprawdzania rozmiaru bazy danych w SQL Server za pomocą T-SQL

  4. Skróć datę do godziny/minuty

  5. Wstaw dane za pomocą funkcji o wartościach przechowywanych w tabeli w SQL Server