मैं एसक्यूएल सर्वर अद्यतन उत्प्रेरक का उदाहरण की जरूरत है, एक और तालिका में एसक्यूएल statments निष्पादित करने के लिएएसक्यूएल सर्वर अद्यतन ट्रिगर, पहले खेतों प्राप्त करें और अद्यतन के बाद
उत्तर
एसक्यूएल सर्वर 2 "जादू" टेबल कि प्रत्येक पंक्ति है कि, डाला अद्यतन, या बयान है कि ट्रिगर निष्पादित करने की वजह से हटा दिया गया था के लिए एक पंक्ति को रोकने के लिए उपयोग कर सकते है चलाता है।
एक सम्मिलित बयान पर डाला पंक्तियों के सभी खोजने के लिए:
select * from inserted
एक DELETE कथन पर नष्ट कर दिया पंक्तियों के सभी के लिए:
select * from deleted
अद्यतन बयान के लिए, प्रत्येक पंक्ति अपडेट नहीं होगा सम्मिलित और हटाए गए दोनों टेबलों में मौजूद है। सम्मिलित तालिका अद्यतन विवरण के बाद पंक्ति का नया मान रखेगी, और हटाई गई तालिका अद्यतन विवरण से ठीक पहले पंक्ति का पुराना मान रखेगी। आपको जो चाहिए वह प्राप्त करने के लिए दो तालिकाओं के बीच जुड़ें:
select i.*, d.*
from inserted i
join deleted d on (i.id = d.id)
आप चाहते हैं विशेष ट्रिगर नष्ट कर दिया इससे पहले कि और अद्यतन के बाद खेतों जाओ और सम्मिलित टेबल MSDN से: तालिकाओं के बीच रेफेरेंन्शिअल सत्यनिष्ठा बढ़ाएँ:
DML में, डाला जाता है और नष्ट कर दिया तालिकाओं मुख्य रूप से निम्नलिखित प्रदर्शन करने के लिए उपयोग किया जाता है चलाता है। दृश्य के अंतर्गत बेस टेबल में डेटा डालें या अपडेट करें। त्रुटियों के लिए परीक्षण और त्रुटि के आधार पर कार्रवाई करें। डेटा संशोधन से पहले और बाद में तालिका की स्थिति के बीच अंतर खोजें और उस अंतर के आधार पर कार्यवाही करें। हटाई गई तालिका DELETE और अद्यतन विवरणों के दौरान प्रभावित पंक्तियों की प्रतियां संग्रहीत करती है। एक हटा या अद्यतन कथन के निष्पादन के दौरान, ट्रिगर तालिका से पंक्तियां हटा दी जाती हैं और हटाई गई तालिका में स्थानांतरित की जाती हैं। हटाई गई तालिका और ट्रिगर तालिका में सामान्य रूप से कोई पंक्ति नहीं होती है। डाला गया तालिका INSERT और अद्यतन विवरणों के दौरान प्रभावित पंक्तियों की प्रतियां संग्रहीत करती है। डालने या अपडेट लेनदेन के दौरान, नई पंक्तियों को सम्मिलित तालिका और ट्रिगर तालिका दोनों में जोड़ा जाता है। डाली गई तालिका में पंक्तियां ट्रिगर टेबल में नई पंक्तियों की प्रतियां हैं।
यह लिंक मर चुका है। क्या आप इसे अपडेट कर सकते हैं? –
@ फेडेरिको ट्राइमन, यह लिंक मेरे लिए काम करता प्रतीत होता है, यह पता लगाया गया है कि एक एमएसडीएन लिंक शायद मृत नहीं होगा। मैंने हालांकि कुछ जवाब सामग्री के शरीर में जोड़ा है। –
अब यह जीवित है! धन्यवाद –
- 1. यदि अद्यतन() एसक्यूएल सर्वर ट्रिगर में
- 2. अद्यतन ट्रिगर
- 3. विलय के बिना अद्यतन और अद्यतन संस्करण प्राप्त करें?
- 4. अद्यतन ट्रिगर से पहले MySQL - मूल्य बदलें
- 5. एसक्यूएल सर्वर अद्यतन शामिल हों
- 6. एसक्यूएल सर्वर प्रदर्शन - यदि चयन + अद्यतन बनाम अद्यतन
- 7. एसक्यूएल ट्रिगर - मैं अद्यतन मूल्य कैसे प्राप्त करूं?
- 8. आल्टर और अद्यतन एसक्यूएल
- 9. अद्यतन सेट में एसक्यूएल (एसक्यूएल सर्वर 2005)
- 10. एसक्यूएल अद्यतन
- 11. तालिका अद्यतन ट्रिगर के बाद असीमित रूप से SQL सर्वर से एक कंसोल अनुप्रयोग चलाएं?
- 12. MySQL अद्यतन ट्रिगर - बदले गए कॉलम ढूंढें?
- 13. सर्वर डेटाबेस अद्यतन होने पर sqlite डेटाबेस अद्यतन करें
- 14. एसक्यूएल सर्वर - [SELECT] लॉक [अद्यतन] करता है?
- 15. एसक्यूएल सर्वर 2005 तालिका परिवर्तनीय अद्यतन समस्या
- 16. अद्यतन
- 17. एसक्यूएल अद्यतन स्तंभ सबक्वेरी
- 18. Git पुल के बाद अद्यतन
- 19. बाद अद्यतन हुक
- 20. Ember.ArrayProxy हैंडलबार्स को ट्रिगर नहीं कर रहा है # अद्यतन अद्यतन
- 21. अद्यतन अद्यतन के लिए उपयोग
- 22. SPARQL: एसक्यूएल अद्यतन के बराबर?
- 23. एसक्यूएल सर्वर थोक डालने/अद्यतन बनाम मेरिज डालने या अद्यतन परिदृश्य
- 24. एसक्यूएल सर्वर उत्प्रेरक स्विचिंग सम्मिलित करें, हटाएँ, अद्यतन
- 25. एसक्यूएल सर्वर में अद्यतन स्टेटमेंट में यादृच्छिक रिकॉर्ड के साथ अद्यतन तालिका?
- 26. कोई अद्यतन
- 27. अद्यतन
- 28. अद्यतन
- 29. SQL सर्वर ट्रिगर में अद्यतन कॉलम की सूची कैसे प्राप्त करें?
- 30. तत्वों को अद्यतन करने के बाद java.util.PriorityQueue को रीहाइपी करें
+1 हटाए गए और सम्मिलित दोनों तालिकाओं में अद्यतन पंक्तियों के बारे में बिंदु के लिए धन्यवाद। – mdma
जितना मुझे यह समाधान पसंद है, मैं यह इंगित करना चाहता हूं कि ट्रिगर द्वारा संदर्भित तालिका में _if_ प्राथमिक कुंजी नहीं है, 'अपडेट' कथन उपयोगी नहीं होगा :( –
जब तक कोई तरीका है अर्थात् दो तालिकाओं के बीच जुड़ें (जैसे कि सामान्य विवरण का WHERE खंड आमतौर पर उपयोग किया जाता है), यह अर्थपूर्ण होगा, भले ही तालिका में औपचारिक प्राथमिक कुंजी न हो। –