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

SQL सर्वर - डालने के बाद/सम्मिलित करने के लिए - रोलबैक

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

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

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

साथ ही:FOR INSERT AFTER INSERT . जैसा ही है SQL सर्वर में - ट्रिगर को बाद निष्पादित किया जाता है INSERT बयान ने अपना काम कर दिया है।

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



  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. किसी विशेष तिथि पर बनाई गई और / या संशोधित संग्रहीत प्रक्रियाओं की सूची प्राप्त करें?

  3. SQL में एकाधिक वर्णों को कैसे बदलें?

  4. कई स्तंभों को एक में मिलाएँ, समानता बनाए रखें और अंतरों को बदलें

  5. MS SQL सर्वर पर ODBC क्वेरी केवल PHP PDO (FreeTDS) में पहले 255 वर्ण लौटाती है