Mysql
 sql >> डेटाबेस >  >> RDS >> Mysql

सभी तालिका परिवर्तनों को द्वितीयक तालिका में लॉग करने के लिए MySQL ट्रिगर का उपयोग करना

सम्मिलित सिंटैक्स है

INSERT INTO table (columns_list) VALUES (values_list)

तो आपका इंसर्ट कुछ इस तरह दिखेगा (मैं एक MySQL विशेषज्ञ नहीं हूँ लेकिन आप क्वेरी को फिट कर सकते हैं):

INSERT INTO data_tracking 
(`data_id` , `field` , `old_value` , `new_value` , `modified` ) 
VALUES 
(NEW.data_id, 'field1', OLD.field, NEW.field, CURRENT_DATETIME());

और इसे फ़ील्ड2 और फ़ील्ड3 पर भिन्नता के लिए दोहराएं

मुझे लगता है कि यह पूरा ट्रिगर होगा, कृपया कोशिश करें:

DELIMITER $$

DROP TRIGGER `update_data `$$

CREATE TRIGGER `update_data` AFTER UPDATE on `data_table`
FOR EACH ROW
BEGIN
    IF (NEW.field1 != OLD.field1) THEN
        INSERT INTO data_tracking 
            (`data_id` , `field` , `old_value` , `new_value` , `modified` ) 
        VALUES 
            (NEW.data_id, "field1", OLD.field1, NEW.field1, NOW());
    END IF;
    IF (NEW.field2 != OLD.field2) THEN
        INSERT INTO data_tracking 
            (`data_id` , `field` , `old_value` , `new_value` , `modified` ) 
        VALUES 
            (NEW.data_id, "field2", OLD.field2, NEW.field2, NOW());
    END IF;
    IF (NEW.field3 != OLD.field3) THEN
        INSERT INTO data_tracking 
            (`data_id` , `field` , `old_value` , `new_value` , `modified` ) 
        VALUES 
            (NEW.data_id, "field3", OLD.field3, NEW.field3, NOW());
    END IF;
END$$

DELIMITER ;



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. क्या MySQL छँटाई के लिए अनुक्रमणिका का उपयोग करता है?

  2. पीडीओ-> क्वेरी () और पीडीओ-> निष्पादन () के बीच अंतर

  3. चुनें * टीबीएल से जहां CONCAT ('%', <अन्य sql क्वेरी LIMIT 1>, '%') पसंद है - कैसे?

  4. रूबी में Rails database.yml पर सॉकेट घोषणा क्या है?

  5. MySQL में एक कॉलम का कोलाजेशन कैसे दिखाएं