Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

क्या मुझे टी-एसक्यूएल में कैच ब्लॉक में रोलबैक एक से पहले लेनदेन की गणना करनी है?

दरअसल, अगर मैं पहले से ही लेन-देन कर रहा हूं, तो मैं कभी भी कोई नया लेन-देन शुरू नहीं करता।

यह नेस्टेड संग्रहित प्रोसेस, वितरित TXNs और TransactionScope

. से संबंधित है

याद रखें, SQL सर्वर में नेस्टेड ट्रांजैक्शन जैसी कोई चीज नहीं है वैसे भी।

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. दूरस्थ SQL सर्वर डेटाबेस से कनेक्ट होने वाली क्लासिक ASP समस्या

  2. क्या अवरुद्ध कर रहा है तालिका नाम से शीर्ष 1 * का चयन करें (नोलॉक) परिणाम लौटने से?

  3. SQL सर्वर पंक्तियाँ सम्मिलित करने के बाद पहुँच के लिए संपादन योग्य नहीं हैं

  4. SQL सर्वर (T-SQL) में वर्तमान लॉगिन नाम लौटाएँ

  5. वर्कर को फ्लोट में बदलने में त्रुटि