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

एकाधिक तालिकाओं से SQL ट्रिगर सम्मिलित करना

आप केवल ट्रिगर में उपलब्ध सम्मिलित या हटाए गए तालिकाओं का संदर्भ नहीं देते हैं, इसलिए निश्चित रूप से आप अपनी क्वेरी में आवश्यक अधिक रिकॉर्ड वापस कर रहे हैं।

पहली बार ट्रिगर लिखते समय, मैं जो करता हूं वह #inserted (और/या #deleted) नामक एक अस्थायी तालिका बनाता है और इसे कई रिकॉर्ड के साथ पॉप्युलेट करता है। यह उस तालिका के डिज़ाइन से मेल खाना चाहिए जिस पर ट्रिगर चालू होगा। यह महत्वपूर्ण है कि आपकी अस्थायी तालिका में कई इनपुट रिकॉर्ड हों जो आपकी क्वेरी को प्रभावित करने वाले विभिन्न मानदंडों को पूरा कर सकें (इसलिए आपके मामले में आप कुछ चाहते हैं जहां केस गिनती 0 होगी और कुछ जहां यह उदाहरण के लिए नहीं होगी) और यह सामान्य होगा तालिका में डाला गया डेटा या अद्यतन init. SQL सर्वर ट्रिगर डेटा के सेट पर काम करते हैं, इसलिए यह भी सुनिश्चित करता है कि आपका ट्रिगर कई रिकॉर्ड uiinserts या अपडेट को ठीक से संभाल सकता है। ठीक से लिखे गए ट्रिगर में ऐसे परीक्षण मामले होंगे जिनकी आपको जांच करने की ज़रूरत है ताकि यह सुनिश्चित हो सके कि सब कुछ सही ढंग से होता है, आपकी #inserted तालिका में ऐसे रिकॉर्ड शामिल होने चाहिए जो उन सभी परीक्षण मामलों को पूरा करते हों।

फिर लेन-देन में क्वेरी लिखें (और परीक्षण करते समय इसे वापस रोल करें) #inserted में शामिल हों। यदि आप एक चयन के साथ एक सम्मिलित कर रहे हैं, तब तक केवल चयन भाग लिखें जब तक कि आपको वह अधिकार न मिल जाए, फिर सम्मिलित करें। परीक्षण के लिए, उस तालिका से एक चयन लिखें जिसे आप सम्मिलित कर रहे हैं ताकि आप रोलबैक से पहले डाले गए डेटा को देख सकें।

एक बार जब आप सब कुछ काम कर लेते हैं, तो सम्मिलित किए गए संदर्भों को सम्मिलित करने के लिए बदलें, किसी भी परीक्षण कोड को हटा दें और निश्चित रूप से रोलबैक (संभवतः आप जो कर रहे हैं उस पर पूरा लेनदेन निर्भर है।) और ड्रॉप जोड़ें और कोड का ट्रिगर हिस्सा बनाएं। अब आप ट्रिगर के रूप में अपने ट्रिगर का परीक्षण कर सकते हैं, लेकिन आप अच्छी स्थिति में हैं क्योंकि आप जानते हैं कि यह आपके पहले के परीक्षण से काम करने की संभावना है।




  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 सर्वर में बिगिंट (यूनिक्स टाइमस्टैम्प) को डेटाटाइम में कैसे परिवर्तित कर सकता हूं?

  2. SQL सर्वर में डेटाबेस मेल सक्षम करें (T-SQL)

  3. क्या डेटाटाइम 2 के लिए isdate () जैसा कोई फ़ंक्शन है?

  4. वर्ग घोषणा में SQL Server 2008 TIME कॉलम का उपयोग करना

  5. SQL सर्वर में एक तालिका का नाम बदलें (T-SQL)