FOR
और AFTER
ट्रिगर के बीच क्या अंतर है?
FOR
और AFTER
ट्रिगर के बीच क्या अंतर है?
जवाबों:
कोई फर्क नहीं है, वे एक ही काम करते हैं।
CREATE TRIGGER trgTable on dbo.Table FOR INSERT,UPDATE,DELETE
के समान है
CREATE TRIGGER trgTable on dbo.Table AFTER INSERT,UPDATE,DELETE
एक INSTEAD OF
ट्रिगर अलग है, और डालने से पहले और उसके बजाय आग लग जाती है और इसे अंतर्निहित तालिकाओं में उपयुक्त मान डालने के लिए, विचारों पर उपयोग किया जा सकता है।
@ बिलकुल सही है।
यहाँ MSDN आलेख SQL सर्वर ट्रिगर की खोज है
लेख से एक पैराग्राफ:
यह वाक्यविन्यास SQL सर्वर के पुराने संस्करणों में भी स्वीकार्य है। हालाँकि, अब जब SQL Server 2000 में दो प्रकार के ट्रिगर्स हैं, तो मैं AF ट्रिगर्स के रूप में फॉर ट्रिगर्स को संदर्भित करना पसंद करता हूं। इस प्रकार, इस लेख के शेष भाग के लिए मैं या तो AFTER या INSTEAD ऑफ ट्रिगर्स का उल्लेख करूंगा।
पहले देखे गए AFTER ट्रिगर की तरह, यह ट्रिगर अंतिमनाम फ़ील्ड में किए जा रहे परिवर्तनों को रोकता है। हालांकि, यह इस व्यापार नियम को पिछले उदाहरण की तुलना में अलग तरीके से लागू करता है। क्योंकि ट्रिगर का INSTEAD UPDATE स्टेटमेंट के स्थान पर आग लगाता है, ट्रिगर का INSTEAD तब मूल्यांकन करता है कि व्यापार नियम परीक्षण पास करता है या नहीं। यदि व्यापार नियम परीक्षण पास होता है, तो अद्यतन के ट्रिगर के क्रम में स्पष्ट रूप से अद्यतन कथन को फिर से लागू करना होगा।
AFTER निर्दिष्ट करता है कि DML ट्रिगर को तभी निकाल दिया जाता है जब ट्रिगर SQL कथन में निर्दिष्ट सभी ऑपरेशन सफलतापूर्वक निष्पादित हो गए हों। इस ट्रिगर आग से पहले सभी संदर्भात्मक कैस्केड क्रियाएं और बाधा जांच भी सफल होनी चाहिए। जब केवल कीवर्ड निर्दिष्ट किया जाता है तो AFTER डिफ़ॉल्ट होता है।
बाद के ट्रिगर्स को विचारों पर परिभाषित नहीं किया जा सकता है।
INSTEAD OF निर्दिष्ट करता है कि DML ट्रिगर को SQL कथन को ट्रिगर करने के बजाय निष्पादित किया जाता है, इसलिए, ट्रिगर करने वाले कथनों के कार्यों को ओवरराइड करता है। डीडीएल या लॉगऑन ट्रिगर्स के लिए INSTEAD निर्दिष्ट नहीं किया जा सकता है।
https://docs.microsoft.com/en-us/sql/t-sql/statements/create-trigger-transact-sql