sql >> Databáze >  >> RDS >> Sqlserver

Musím počítat transakce před vrácením jedné v catch bloku v T-SQL?

Ve skutečnosti nikdy nezahájím novou transakci, pokud již v nějaké jsem.

Toto se zabývá vnořenými uloženými procesy, distribuovanými TXN a TransactionScope

Nezapomeňte, že existuje žádná věc jako vnořená transakce v SQL Server tak jako tak.

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. Jak připojit vývojáře SQL k serveru XAMPP MYSQL

  2. Data emodži načtená prostřednictvím připojení ODBC se zobrazí jako otazník

  3. SQL problém s cenami hotelových rezervací

  4. Vzdáleně se připojte k MySQL na virtuálním počítači Google Compute Engine