आपका INSERT कथन हमेशा लेन-देन में चलता है - या तो आपने एक को स्पष्ट रूप से परिभाषित किया है, या यदि नहीं, तो SQL सर्वर एक अंतर्निहित लेनदेन का उपयोग करेगा।
आप अपनी तालिका में एक (या एकाधिक) पंक्ति सम्मिलित कर रहे हैं। फिर - अभी भी लेन-देन के अंदर - AFTER INSERT ट्रिगर चलता है और कुछ शर्तों की जांच करता है - आमतौर पर Inserted . का उपयोग करके ट्रिगर के अंदर उपलब्ध छद्म तालिका, जिसमें सम्मिलित की गई पंक्तियाँ होती हैं।
अगर आप ROLLBACK TRANSACTION call को कॉल करते हैं आपके ट्रिगर में, फिर हाँ - आपका लेन-देन, जो कुछ भी कर रहा है, उसे वापस ले लिया गया और ऐसा लगता है कि INSERT कभी नहीं हुआ - आपकी डेटाबेस तालिका में कुछ भी दिखाई नहीं देता है।
साथ ही:FOR INSERT AFTER INSERT . जैसा ही है SQL सर्वर में - ट्रिगर को बाद निष्पादित किया जाता है INSERT बयान ने अपना काम कर दिया है।
एक बात का ध्यान रखें (जो बहुत सारे प्रोग्रामर गलत हो जाते हैं):ट्रिगर को प्रति कथन एक बार निकाल दिया जाता है - नहीं प्रति पंक्ति एक बार! इसलिए यदि आप एक बार में 20 पंक्तियाँ सम्मिलित करते हैं, तो ट्रिगर सक्रिय हो जाता है एक बार और Inserted ट्रिगर के अंदर छद्म तालिका में 20 पंक्तियाँ हैं। ट्रिगर लिखते समय आपको इसे ध्यान में रखना होगा - आप नहीं . हैं हमेशा केवल एक पंक्ति डालने से निपटना!