triggers - SQL Server 2005 How can I set up an audit table that records the column name updated? -


यह तालिका परिभाषा दी

  तालिका herb.app बनाएं (appId int identity प्राथमिक कुंजी, आवेदन varchar (15) अद्वितीय, ग्राहकनाम varchar (35), ऋण संरक्षण बीमा राशि, राज्य varchar (3), पते varchar (50), ऋण अमाउंट पैसा, जोड़ा varchar (7) नल नहीं, जोड़ा गया dhalldatetime डिफ़ॉल्ट getdate ())  

मेरा मानना ​​है कि परिवर्तन न्यूनतम होंगे, आमतौर पर केवल एक फ़ील्ड और बहुत ही विरल होगा।

तो मैंने यह तालिका बनाई:

  तालिका जड़ी बूटी बना .appAudit (appAuditId int प्राथमिक कुंजी, फ़ील्ड varchar (20), पुराना वैलार (50), बदलकर varchar (7) नल नहीं, जोड़ा गया जोड़ा smalldatetime डिफ़ॉल्ट getdate ())  

कैसे एक ट्रिगर में क्या इसे स्टोर करने के लिए परिवर्तित किए गए मूल्य के कॉलम का नाम मिल सकता है? मुझे पता है कि हटाई गई तालिका में शामिल होने से मूल्य कैसे प्राप्त किया जाए।

तालिकाओं का उपयोग करें निगेल रिव्एट ने इन तालिकाओं का उपयोग करते हुए एक महान लिखा है। यह काफी जटिल एसक्यूएल कोड है, लेकिन यह एक साथ जानकारी खींचने के कुछ अच्छे तरीके को हाइलाइट करता है और एक बार जब आप समझते हैं कि आप प्रेरणा के रूप में अपने विचारों का उपयोग करके कस्टम समाधान बना सकते हैं, या आप उसकी स्क्रिप्ट का उपयोग कर सकते हैं।

तालिकाओं के बारे में महत्वपूर्ण विचार यहां दिए गए हैं:

  • सम्मिलित किए गए डालने पर, सम्मिलित मान रखे जाते हैं और हटाए गए खाली हैं।
  • एक अद्यतन पर, डाला गया नया मान
  • नष्ट किए गए मानों को नष्ट कर दिया गया है और सम्मिलित रिक्त है।
  • सम्मिलित और हटाई गई तालिकाओं की संरचना (यदि रिक्त नहीं) समान हैं लक्ष्य तालिका में।
  • आप सिस्टम तालिकाओं से कॉलम नाम निर्धारित कर सकते हैं और निगेल के कोड में सचित्र के रूप में उन पर पुनरावृति कर सकते हैं।

< पूर्व> यदि मौजूद है (डाला से * चुनें) मौजूद है (हटाए जाने से * चुनें) - यह एक अपडेट है ... और - यह एक सम्मिलित है ... else - यह एक डिलीट है ... - किसी विशेष क्षेत्र के अपडेट्स के लिए चयन करें डी। [मायफ़िल्ड] ए एस ओल्डवैल्यू, आई। [मायफ़िल्ड] एएस न्यूवैल्यू, सिस्टम_यूसर एएस यूआरएल द्वारा डाली गई आई इनर जॉइन डी ऑन आई। [मायपरिरीकेफीफिल्ड] = डी। [MyPrimaryKeyField] - आपकी तालिका के लिए SELECT d.CustomerName AS OldValue, i.CustomerName के रूप में NewValue, सिस्टम_यूसर के रूप में यूआरएल से सम्मिलित I INNER को हटा दिया गया डी पर i.appId = d.appId

< / कोड>


Comments

Popular posts from this blog

c# - ListView onScroll event -

PHP - get image from byte array -

Linux Terminal Problem with Non-Canonical Terminal I/O app -