दिलचस्प पोस्ट
पायथन: सूची बनाम डेक के लिए तालिका देखें std :: string से स्ट्रिंग ^ में परिवर्तित करें Django को MySQL का उपयोग करने के लिए सेट करना एंड्रॉइड में RelativeLayout के विचारों के Z ऑर्डर को परिभाषित करना पायथन स्रोत में यूटीएफ -8 एन्कोडिंग के साथ काम करना मैं int से स्ट्रिंग कैसे बदलूं? Ggplot में ऑर्डर स्टैक्ड बार ग्राफ़ कॉलिंग नींद (5); और टेक्स्ट फ़ील्ड को अपडेट करने से काम नहीं कर रहा है PHP प्रोजेक्ट में सहायक पैटर्न को स्टोर करने, पहुंचने और व्यवस्थित करने के लिए क्या पैटर्न मौजूद हैं? गैर-पाया गया कुंजी के लिए डिफ़ॉल्ट मान वापस करने के लिए हैशमैप? सिंक में जीआईटी रेपो के सार्वजनिक और निजी संस्करणों को कैसे रखा जाए? नमूना http रेंज अनुरोध सत्र स्ट्रिंग को तर्कों में कनवर्ट करते समय बाश उद्धरण पार्स नहीं करता एक jQuery datagrid प्लगइन का चयन? ओरेकल <>,! =, ^ = ऑपरेटर्स

SQL सर्वर 2008 में लेनदेन का सही इस्तेमाल

मेरे पास 2 आज्ञाएं हैं और उनमें से दोनों को सही तरीके से क्रियान्वित किया गया है या उनमें से कोई भी निष्पादित नहीं है। इसलिए मुझे लगता है कि मुझे एक लेनदेन की आवश्यकता है, लेकिन मुझे नहीं पता कि इसका सही ढंग से उपयोग कैसे करना है

निम्नलिखित स्क्रिप्ट के साथ समस्या क्या है?

BEGIN TRANSACTION [Tran1] INSERT INTO [Test].[dbo].[T1] ([Title], [AVG]) VALUES ('Tidd130', 130), ('Tidd230', 230) UPDATE [Test].[dbo].[T1] SET [Title] = N'az2' ,[AVG] = 1 WHERE [dbo].[T1].[Title] = N'az' COMMIT TRANSACTION [Tran1] GO 

insert कमांड निष्पादित लेकिन update आदेश में एक समस्या है। मैं इन दोनों आज्ञाओं को वापस करने के लिए कैसे लागू कर सकता हूं अगर उनमें से किसी को निष्पादन में कोई त्रुटि है?

Solutions Collecting From Web of "SQL सर्वर 2008 में लेनदेन का सही इस्तेमाल"

ट्रांजैक्शन विफल रहता है, यदि लेन-देन सफल होता है, तो एक प्रयास / कैच ब्लॉक जोड़ें, लेन-देन असफल हो जाता है, तो वह बदलाव लाएगा:

 BEGIN TRANSACTION [Tran1] BEGIN TRY INSERT INTO [Test].[dbo].[T1] ([Title], [AVG]) VALUES ('Tidd130', 130), ('Tidd230', 230) UPDATE [Test].[dbo].[T1] SET [Title] = N'az2' ,[AVG] = 1 WHERE [dbo].[T1].[Title] = N'az' COMMIT TRANSACTION [Tran1] END TRY BEGIN CATCH ROLLBACK TRANSACTION [Tran1] END CATCH GO 

संग्रहीत कार्यप्रणाली की शुरुआत में एक एसटीटी XACT_ABORT चालू कर देना चाहिए ताकि त्रुटि के मामले में एसक्यूएल सर्वर को स्वचालित रूप से रोलबैक लेनदेन के लिए निर्देश दिया जा सके। यदि ओमिट किया गया हो या बंद करने के लिए सेट किया गया तो प्रत्येक वक्तव्य के बाद @@ त्रुटि का परीक्षण करने की आवश्यकता है या TRY का उपयोग करें … कैच रोलबैक ब्लॉक

आसान दृष्टिकोण:

 CREATE TABLE T ( C [nvarchar](100) NOT NULL UNIQUE, ); SET XACT_ABORT ON -- Turns on rollback if T-SQL statement raises a run-time error. SELECT * FROM T; -- Check before. BEGIN TRAN INSERT INTO T VALUES ('A'); INSERT INTO T VALUES ('B'); INSERT INTO T VALUES ('B'); INSERT INTO T VALUES ('C'); COMMIT TRAN SELECT * FROM T; -- Check after. DELETE T;