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

तालिका अद्यतन पर, मेरे .NET कोड में एक क्रिया को ट्रिगर करें

आपको एक दो प्रश्न पूछने की जरूरत है।

क्या आप डीबी स्तर पर अपने किसी भी व्यावसायिक तर्क को नहीं चाहते हैं? स्पष्ट रूप से एक डीबी ट्रिगर ऐसा कर सकता है (जब कोई मूल्य बदल जाता है तो कुछ क्रिया करें, भले ही केवल विशिष्ट मूल्य ही हो)।

मैंने कुछ सिस्टम देखे हैं जो डीबी ट्रिगर भारी हैं। उनका 'तर्क' डीबी प्लेटफॉर्म के साथ गहराई से और अत्यधिक युग्मित है। इसके कुछ फायदे हैं, लेकिन ज्यादातर लोग शायद कहेंगे कि नुकसान बहुत अधिक हैं (युग्मन, encapuslation/पुन:प्रयोज्य की कमी)।

आप जो कर रहे हैं और आपके झुकाव के आधार पर आप यह कर सकते हैं:

  1. सुनिश्चित करें कि सभी DAO/BusinessFunctoin ऑब्जेक्ट आपके 'ईवेंट' को कॉल करते हैं object.function एक निश्चित मूल्य परिवर्तन होने पर आप जो चाहते हैं उसे करने के लिए।

  2. अपने 'ईवेंट' को कॉल करने के लिए ट्रिगर का उपयोग करें object.function जब एक निश्चित मूल्य परिवर्तन होता है।

  3. आपका ट्रिगर सब कुछ करता है।

मैं व्यक्तिगत रूप से विकल्प 2 की ओर झुकता हूं जहां आपके पास न्यूनतम ट्रिगर होता है (जो आपके object.function पर ईवेंट कॉल को आसानी से सक्रिय करता है। ) इसलिए आप अपने डीबी को अपने व्यावसायिक तर्क से गहराई से नहीं जोड़ते हैं।

विकल्प 1 ठीक है, लेकिन थोड़ी परेशानी हो सकती है जब तक कि आपके पास बीएफ/डीएओ का एक बहुत ही संकीर्ण सेट न हो जो इस डीबी टेबल से बात करें। फ़ील्ड जिसे आप देखना चाहते हैं।

विकल्प 3 सबसे खराब विकल्प है क्योंकि आप अपने डीबी में तर्क जोड़ते हैं और अपनी व्यावसायिक तर्क परत तक इसकी पहुंच कम करते हैं।

इसे देखते हुए, विकल्प 2 के माध्यम से इसे पूरा करने के लिए यहां कुछ जानकारी दी गई है:

MSDN से इस उदाहरण का उपयोग करना:http://msdn.microsoft.com/en -us/लाइब्रेरी/938d9dz2.aspx

यह दिखाता है कि किसी प्रोजेक्ट में ट्रिगर कैसे चलाया जाए और CLR ऑब्जेक्ट को कैसे कॉल किया जाए।

प्रभावी रूप से, आपकी परियोजना में, आप एक ट्रिगर बनाते हैं और इसे अपनी कक्षा कहते हैं।

लाइन पर ध्यान दें:[SqlTrigger(Name="UserNameAudit", Target="Users", Event="FOR INSERT")]

यह परिभाषित करता है कि जब कोड सक्रिय होता है, तो कोड के भीतर, आप अपनी बाधा की जांच कर सकते हैं, फिर शेष विधि (या नहीं) को सक्रिय कर सकते हैं, या किसी अन्य object.method को कॉल कर सकते हैं। जैसी जरूरत थी।

सीधे डीबी पर जाने और ट्रिगर जोड़ने के बीच प्राथमिक अंतर यह है कि यह आपको एक साथ तैनात किए जाने पर आपके प्रोजेक्ट में सभी ऑब्जेक्ट्स तक पहुंच प्रदान करता है।



  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. SQL सर्वर डेटाबेस को Azure SQL डेटाबेस में माइग्रेट करने के तरीके

  3. एसएसआईएस संस्करण चेकआउट

  4. मैं JDBC का उपयोग करके SQL Server 2008 डेटाबेस से कैसे जुड़ूँ?

  5. तैयार पैराम्स LIKE स्टेटमेंट SQLSRV के साथ काम नहीं कर रहा है