क्या ट्रिगर के अंदर सभी कॉलम नामों के माध्यम से लूप करना संभव है?mysql ट्रिगर में कॉलम के माध्यम से लूप
परिदृश्य: संशोधित की गई तालिका के सभी कॉलम लॉग इन करने के लिए। यदि कुछ मान नहीं बदले हैं, तो उनको लॉग न करें।
DROP TRIGGER IF EXISTS t_before_update_test;
DELIMITER $$
CREATE TRIGGER t_before_update_test
BEFORE UPDATE ON test
FOR EACH ROW
BEGIN
-- Loop here for all columns, not just col1
IF OLD.col1 <> NEW.col1 THEN
INSERT INTO change_logs(
log_on, user_id,
table_name, colum_name,
old_data, new_data
) VALUES (
UNIX_TIMESTAMP(NOW()), '0',
'test', 'col1',
OLD.col1, NEW.col1
);
END IF;
-- process looping all columns
-- col1, col2, ... should be dynamic per loop
END $$
यह प्रतिलिपि उदाहरण काम कर रहा है, जहां मैं अब सभी स्तंभों पुरानी या नई में उपलब्ध लूप करने के लिए की जरूरत है।
लिंक से कॉल कर सकते हैं: यहाँ लिंक के एक जोड़े हैं केवल स्टैक ओवरफ़्लो पर ही उत्तर फेंक दिए जाते हैं। यदि लिंक अमान्य हो जाते हैं तो इस पोस्ट में प्रासंगिक बिंदुओं को शामिल करना बेहतर होगा। –
यह भी स्पष्ट नहीं है कि ट्रिगर के अंदर उन लिंक में समाधान का उपयोग कैसे करें (जहां आपको OLD और NEW तक पहुंचने की आवश्यकता है – adinas