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

Sudahkah saya menghitung transaksi sebelum mengembalikan satu di blok tangkapan di T-SQL?

Sebenarnya, saya tidak pernah memulai transaksi baru jika saya sudah melakukannya.

Ini berkaitan dengan procs tersimpan bersarang, TXN terdistribusi, dan TransactionScope

Ingat, ada tidak ada yang namanya transaksi bersarang di SQL Server omong-omong.

DECLARE @StartTranCount int

BEGIN TRY
    SET @StartTranCount = @@TRANCOUNT
    IF @StartTranCount = 0 BEGIN TRAN
        -- my code
    IF @StartTranCount = 0 COMMIT TRAN
END TRY
BEGIN CATCH
    IF @StartTranCount = 0 AND @@trancount > 0
    BEGIN
        ROLLBACK TRAN
        DECLARE @message NVARCHAR(MAX)
        DECLARE @state INT
        SELECT @message = ERROR_MESSAGE(), @state = ERROR_STATE()
        RAISERROR (@message, 11, @state)
    END
    /*
    or just
    IF @StartTranCount = 0 AND @@trancount  
        ROLLBACK TRAN
    */
END CATCH


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dapatkan hari pertama dalam seminggu di SQL Server

  2. Cara menyalin data dan tabel database dari satu database ke database lainnya

  3. Bagaimana cara saya membuat serial grafik besar objek .NET menjadi SQL Server BLOB tanpa membuat buffer besar?

  4. Cara Memperbaiki "nama profil tidak valid" Saat Memperbarui Profil Email Database di SQL Server (T-SQL)

  5. Mengubah parameter multi-nilai menjadi tabel sementara di SQL Server Business Intelligence Development Studio