Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Cara mengembalikan atau melakukan transaksi di SQL Server

Kabar baiknya adalah transaksi di SQL Server dapat menjangkau beberapa batch (masing-masing exec diperlakukan sebagai kelompok terpisah.)

Anda dapat membungkus EXEC pernyataan dalam BEGIN TRANSACTION dan COMMIT tetapi Anda harus melangkah lebih jauh dan mundur jika terjadi kesalahan.

Idealnya Anda menginginkan sesuatu seperti ini:

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

    IF @@TRANCOUNT > 0
        ROLLBACK
END CATCH

BEGIN TRANSACTION dan COMMIT Saya yakin Anda sudah akrab dengannya. BEGIN TRY dan BEGIN CATCH blok pada dasarnya ada untuk menangkap dan menangani kesalahan yang terjadi. Jika salah satu dari EXEC . Anda pernyataan menimbulkan kesalahan, eksekusi kode akan melompat ke CATCH memblokir.

Kode bangunan SQL Anda yang ada harus berada di luar transaksi (di atas) karena Anda selalu ingin membuat transaksi Anda sesingkat mungkin.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara terbaik untuk membuat indeks di SQL Server

  2. Menghitung jumlah bulan penuh antara dua tanggal dalam SQL

  3. Sintaks salah di dekat 'OFFSET'. Penggunaan opsi NEXT yang tidak valid dalam pernyataan FETCH di inti Entity Framework

  4. DECRYPTBYASYMKEY() Tidak Mengembalikan Nilai yang Diharapkan

  5. Generasi waktu acak yang berbeda dalam interval tetap