मेरे पास 120 कॉलम वाली एक टेबल है। मुझे ऑडिट ट्रेल सेट अप करने की आवश्यकता है जो इसे बदलने पर किसी कॉलम को लॉग करेगा। यह अब के रूप में, मुझे लगता है मैं प्रत्येक कॉलम में इस तरह की हालत कुछ के साथ ट्रिगर सेट करने के लिए है लगता है:MySQL अद्यतन ट्रिगर - बदले गए कॉलम ढूंढें?
IF(NEW.columnName != OLD.columnName)
THEN //log the old value
यह 120 बार किया जा करने की आवश्यकता होगी ... मैं इस दृष्टिकोण स्वीकार कर लिया है जबकि 20 साल पहले, आज मैं यह मानने से इनकार करता हूं कि इस तरह की एक सरल प्रक्रिया को स्वचालित रूप से परिवर्तित कॉलम ढूंढना असंभव है। या कुछ इसी तरह
- न तो नई है और न ही पुराने एक टेबल है, यह एक भाषा निर्माण का एक प्रकार है की वजह आप ऐसा नहीं कर सकते:
यह वही है मैं अब तक की खोज की है "अभी चुनें *।"।
- ट्रिगर्स में डायनामिक एसक्यूएल की अनुमति नहीं है (इससे समस्या हल हो सकती है)।
- गतिशील एसक्यूएल का उपयोग करने वाली प्रक्रियाओं को ट्रिगर्स में अनुमति नहीं है (गंभीरता से, ओरेकल, ऐसा लगता है कि आपने इस सुविधा को अक्षम करने के लिए वास्तव में कड़ी मेहनत की है, इससे कोई फर्क नहीं पड़ता)।
मैं पहले से उपयोग करने के लिए सोच रहा था और अस्थायी तालिकाओं और चर के साथ ट्रिगर्स के बाद जो समस्या को हल कर सकता था, फिर भी गतिशील एसक्यूएल की आवश्यकता होगी। मुझे लगता है कि मैंने एक मृत अंत मारा।
क्या इसका कोई समाधान है?
एक पक्ष प्रश्न: क्या यह PostgreSQL में संभव होगा?
अद्यतन:
- एक समाधान के गतिशील एसक्यूएल workaround साथ संयोजन के रूप में उपयोग करने के लिए चलाता के रूप में कार्यक्रम का उपयोग कर: मैं 2 संभावित समाधानों लेकिन उनमें से कोई भी मेरे लिए काफी स्पष्ट लग पाया। मुझे स्वीकार करना है, मुझे यह बिल्कुल नहीं मिला है, क्या इसका मतलब यह है कि घटना हर सेकेंड में आग लगती है चाहे कोई फर्क नहीं पड़ता?
- This article कहता है कि जब तक अस्थायी तालिका का उपयोग नहीं किया जाता है तब तक गतिशील एसक्यूएल का उपयोग ट्रिगर के अंदर करना संभव है। वह अभी भी गतिशील एसक्यूएल का उपयोग कर रहा है, इसलिए मुझे काफी समझ में नहीं आता है।
आप की जाँच की है करने के लिए लिखा जा सकता है यह आपके पिछले प्रश्न के लिए पोस्टग्रेज़ में सत्र सूचना कार्यों के साथ] (http://stackoverflow.com/questions/8759595/within-a-trigger-function-how-to-get-which-fields-are-being-updated) – bonCodigo
@bonCodigo धन्यवाद, स्पष्ट रूप से PostgreSQL इस मामले में अधिक लचीला है। – Caballero