मैं तालिका में होने वाले सभी परिवर्तनों का ट्रैक रखने के लिए एक ट्रिगर लिख रहा हूं। दुर्भाग्यवश तालिका में 150+ कॉलम हैं और मैं कोड में प्रत्येक कॉलम लिखने से बचाना चाहता था (उदा। New.col1, new.col2 ....) और इस प्रकार मैंने "ट्रिगर के बाद"mysql ट्रिगर, बदले गए कॉलम ढूंढें
INSERT INTO logs SELECT *, NOW() FROM abc WHERE abc.id = NEW.Id;
में निम्न क्वेरी लिखी
यह विचार डेटा की नकल के कारण एकाधिक समस्या उत्पन्न कर रहा है जो अद्यतन क्वेरी में नहीं बदला गया है।
संक्षेप में मैं गतिशील रूप से यह जानना चाहता हूं कि कौन से कॉलम अपडेट क्वेरी का हिस्सा थे और यदि यह संभव नहीं है तो "नई" पंक्ति के सभी कॉलमों के माध्यम से पुनरावृत्ति करने का कोई तरीका है, इसलिए मैं गतिशील रूप से पुराने की तुलना कर सकता हूं। @ colName == नया। @ colName?
मैंने पहले ही Oracle PL/SQL: Loop Over Trigger Columns Dynamically, How to determine if anything changed in update trigger in t-sql और MySQL UPDATE trigger: INSERTing the values of the columns that actually changed देखा है।
अंतिम लिंक केवल एक अंतर के साथ मुझे जो चाहिए, उसे बंद कर देता है, मैं निम्नलिखित नियमों में कोड कोड नामों को कड़ी मेहनत नहीं करना चाहता क्योंकि मेरे पास सभी सारणी में 100 से अधिक कॉलम हैं जो मैं लिखने जा रहा हूं के लिए ट्रिगर !!
IF NEW.column1 <> OLD.column1 THEN INSERT INTO... END IF; IF NEW.column2 <> OLD.column2 THEN INSERT INTO... END IF
मैं अब इस मुद्दे को एक नई तरह की सामना करना पड़ गया है ... यहां तक कि अगर मैं अपने ट्रिगर्स में कठिन कोड करने के लिए तैयार सभी 150 कॉलम हूँ, मैं कर रहा हूँ "अपडेटेडबी" कॉलम का ट्रैक रखने में कठिन समय! मेरी मूल तालिका ऐप में लॉग इन लोगों के ट्रैक रखती है और जिन्होंने एप्लिकेशन के माध्यम से अंतिम परिवर्तन किया। दुर्भाग्यवश, हमारा समर्थन तकनीक "अपडेट किए गए" कॉलम को अपडेट किए बिना सीधे डाटाबेस से डेटा बदल सकता है और ऐसे मामले में मुझे यह जानने का कोई तरीका नहीं है कि "अपडेट किया गया" क्वेरी का हिस्सा था या नहीं और इस प्रकार मैं उस कॉलम को सेट नहीं कर सकता आवश्यकता होने पर शून्य करने के लिए! मुझे आशा है कि मैं यहां समझ रहा था :) – Sap
समझ में आता है। हालांकि इसके बारे में कुछ भी नहीं कर सकता। यही एपीआई और "इंटरफेस" के लिए हैं। "समर्थन" लोगों/अन्य देवताओं को ऐसा करने के लिए मजबूर करने के लिए जो उन्हें करना है। – Jegsar