दिलचस्प पोस्ट
एकाधिक INSERT विवरण बनाम एकल INSERT एकाधिक मूल्यों के साथ शब्दों में एक स्ट्रिंग को कैसे विभाजित किया जाए पूर्व: "स्ट्रिंग टॉवर्स" -> "स्ट्रींग इनटो वर्ड्स"? सत्यापन त्रुटि: अमान्य बंडल बंडल में … में अनौचित फ़ाइल 'फ़्रेमवर्क' शामिल है कैसे `git लॉग इनवर्वर करें –grep = <pattern>` या git लॉग को दिखाने के लिए जो एक पैटर्न से मेल नहीं खाते क्या एक मान्य यूनिकोड स्ट्रिंग में एफएफएफएफ हो सकता है? जावा / कैरेक्टर इटरेटर टूटा हुआ है? सिस्टम / आईई प्रॉक्सी को प्रभावित किए बिना Webbrowser नियंत्रण के लिए एक प्रॉक्सी कैसे सेट करें एंड्रॉइड एन बदल भाषा प्रोग्रामेटिक रूप से लोचदार खोज, स्फिंक्स, ल्यूसीन, सोलर, ज़ापियन कौन सा उपयोग के लिए फिट बैठता है? एसक्यूएल सर्वर बनाम बनाम प्रदर्शन IOS में ऐप्स के बीच डेटा साझा करना Xcode 4: .xcarchive के बजाय आईपीए फ़ाइल बनाएँ SQLite पर तालिकाओं में शामिल होने के दौरान मैं एक अद्यतन कैसे करूं? MATLAB में स्थिर भंडार कुछ वैक्टर के तत्वों के सभी संभव संयोजन उत्पन्न करें (कार्टेसीयन उत्पाद) आप कैसे उपयोग करते हैं? : जावास्क्रिप्ट में (सशर्त) ऑपरेटर?

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;