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

SQL सर्वर में रोलबैक या लेन-देन कैसे करें

अच्छी खबर यह है कि SQL सर्वर में एक लेन-देन कई बैचों में हो सकता है (प्रत्येक exec एक अलग बैच के रूप में माना जाता है।)

आप अपना EXEC wrap लपेट सकते हैं BEGIN TRANSACTION . में स्टेटमेंट और COMMIT लेकिन अगर कोई त्रुटि होती है तो आपको एक कदम आगे जाकर रोलबैक करना होगा।

आदर्श रूप से आप कुछ इस तरह चाहते हैं:

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

    IF @@TRANCOUNT > 0
        ROLLBACK
END CATCH

BEGIN TRANSACTION और COMMIT मुझे विश्वास है कि आप पहले से ही परिचित हैं। BEGIN TRY और BEGIN CATCH ब्लॉक मूल रूप से होने वाली किसी भी त्रुटि को पकड़ने और संभालने के लिए होते हैं। अगर आपका कोई EXEC कथन त्रुटि उत्पन्न करते हैं, कोड निष्पादन CATCH पर कूद जाएगा खंड मैथा।

आपका मौजूदा SQL बिल्डिंग कोड लेन-देन (ऊपर) से बाहर होना चाहिए क्योंकि आप हमेशा अपने लेन-देन को यथासंभव छोटा रखना चाहते हैं।




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. सभी तालिकाओं के लिए बाधाओं को कैसे अक्षम करें और इसे सक्षम करें?

  2. क्या एक एसक्यूएल सर्वर टेबल में दो पहचान कॉलम हो सकते हैं?

  3. SQL में सभी विशेष वर्ण ढूँढें और बदलें

  4. टी-एसक्यूएल में अधिकतम मूल्य के रूप में शून्य के साथ किसी विशेष आईडी के लिए अधिकतम तिथि पर वापसी मूल्य

  5. SQL सर्वर संग्रहीत कार्यविधि में एक डायनेमिक जहाँ क्लॉज़ बनाना