2012-04-27 17 views
16

हम विशिष्ट स्तंभ का अद्यतन पर एक MySQL ट्रिगर, जो एक ही तालिका (एक ही पंक्ति) में एक और स्तंभ को अद्यतन करता उपयोग कर सकते हैंMySQL ट्रिगर वाक्य रचना 'कॉलम पर अद्यतन'

create trigger my_trigger 
BEFORE UPDATE OF col1, col2 ON TABLE_NAME 
for each row 
set NEW.col3 = NEW.col3 +1; 

मैं ऊपर कोड UPDATE OF col1, col2 उपयोग करने की कोशिश। यह MySQL में काम नहीं कर रहा है। सही वाक्यविन्यास क्या है, क्या कोई मुझे कुछ उदाहरणों के लिए इंगित कर सकता है।

उत्तर

20

आप निर्दिष्ट कर सकते नहीं ट्रिगर केवल विशिष्ट स्तंभों की अद्यतन पर चलाया जा रहा है कि (एक UPDATE पूरे रिकॉर्ड को प्रभावित करता है), लेकिन आप परीक्षण कर सकते हैं जो स्तंभ आपके ट्रिगर अपडेट किए गए:

DELIMITER ;; 

CREATE TRIGGER my_trigger BEFORE UPDATE ON TABLE_NAME FOR EACH ROW 
IF NOT (NEW.col1 <=> OLD.col1 AND NEW.col2 <=> OLD.col2) THEN 
    SET NEW.col3 = NEW.col3 + 1; 
END IF;; 

DELIMITER ; 
+0

धन्यवाद, लेकिन यह सिर्फ mysql के लिए विशिष्ट है? – cldy1020

+0

@ ms1020: आप अन्य आरडीबीएमएस में रुचि रखते हैं? – eggyal

+4

अभी मैं केवल mysql का उपयोग कर सकता हूं। सिर्फ यह जानना चाहता था कि किसी अन्य आरडीबीएमएस में यह सीमा है या नहीं। मुझे पता है कि ओरेकल कॉलम अपडेट पर समर्थन करता है। – cldy1020

संबंधित मुद्दे