2012-11-14 19 views
6

मैं नीचे ट्रिगर है? इसके बजाय यदि यह 'सम्मिलित करने के लिए' है, तो क्या उस मामले में 'रोलबैक लेनदेन' पंक्ति को हटा देता है?एसक्यूएल सर्वर - - सम्मिलित करें/सम्मिलित के लिए बाद रोलबैक

धन्यवाद !!!

+0

@ मिच व्हाट: एक लेनदेन हमेशा मौजूद रहेगा - नहीं? या तो स्पष्ट या निहित। और रोलबैक उस लेनदेन को समाप्त कर देगा और कुछ भी पूर्ववत करेगा कि यह लेनदेन तालिका में करने का प्रयास कर रहा था। –

+1

हां, माफ करना मार्क, यह सही है। मेरा मतलब एक स्पष्ट लेनदेन था। मुझे लगता है कि मैंने पानी को गड़बड़ कर दिया होगा ... मैं पिछली टिप्पणी हटा दूंगा। –

+0

आप उन मूल्यों को '@ प्रशिक्षक नहीं' और '@ एरियानाम' कहां से प्राप्त करते हैं ?? असल में, यदि आप अपने ट्रिगर में 'रोलबैक ट्रांज़ेक्शन' कहते हैं, तो आप ** अपने 'INSERT' ** को रोक देंगे और निरस्त कर देंगे और –

उत्तर

13

आपका INSERT बयान हमेशा एक सौदे में चलता है - या तो आप स्पष्ट रूप से एक परिभाषित किया है, या यदि नहीं , तो SQL सर्वर एक अंतर्निहित लेनदेन का उपयोग करेगा।

आप अपनी तालिका में एक (या एकाधिक) पंक्ति डाल रहे हैं। फिर - अभी भी लेनदेन के अंदर - AFTER INSERT ट्रिगर चलता है और कुछ शर्तों की जांच करता है - आमतौर पर ट्रिगर के अंदर उपलब्ध Inserted छद्म तालिका का उपयोग करके, जिसमें पंक्तियां शामिल की गई हैं।

आप अपने ट्रिगर में ROLLBACK TRANSACTION फोन है, तो हाँ - अपने लेन-देन, सब कुछ के साथ यह कर दिया गया है, है वापस लुढ़का हुआ है और मानो कि INSERT कभी नहीं हुआ यह है - कुछ भी नहीं अपने डेटाबेस तालिका में दिखाई देता है।

इसके अलावा: FOR INSERT एसक्यूएल सर्वर में AFTER INSERT के रूप में एक ही है - ट्रिगर के बाद INSERT बयान अपने काम किया है निष्पादित किया जाता है।

एक ध्यान में रखना है (जो प्रोग्रामर का एक बहुत गलत) बात: - नहीं प्रति पंक्ति एक बार ट्रिगर बैच प्रति एक बार गोली चलाई है! तो यदि आप एक बार में 20 पंक्तियां डालते हैं, तो ट्रिगर को निकाल दिया जाता है और Inserted ट्रिगर के अंदर छद्म तालिका में 20 पंक्तियां होती हैं। ट्रिगर लिखते समय आपको इसे ध्यान में रखना होगा - आप नहीं हमेशा डालने वाली एक पंक्ति से निपट रहे हैं!

+1

+1। विशेष रूप से बैच बिट के लिए! :) –

0
कोई यह संभव नहीं है, क्योंकि जब उनकी कोई पंक्ति मौजूद है तो यह में ब्लॉक शुरू जाना होगा

...

+1

उत्तर के लिए धन्यवाद! मैं पंक्ति को तब जोड़ने के लिए कैसे रोकूं? – zoe

संबंधित मुद्दे