值不插入其他表

时间:2013-08-08 17:35:52

标签: mysql triggers

    DELIMITER $$
    DROP TRIGGER IF EXISTS ravi.`after_insert`$$
    CREATE
   /*[DEFINER = { user | CURRENT_USER }]*/
   TRIGGER `ravi`.`after_insert` AFTER UPDATE
  ON `ravi`.`user_data`
  FOR EACH ROW 
  BEGIN`
 IF(NEW.field1 !=OLD.field1)THEN
 INSERT INTO logs_data(uri,field_id,old_value,new_value,modified_date)
 VALUES(NEW.uri,"filed1",OLD.field1,NEW.field1,NOW());
 END IF;
 IF(NEW.field2!=OLD.field2)THEN
 INSERT INTO logs_date(uri,field_id,old_value,new_value,modified_date)
 VALUES(NEW.uri,"field2",OLD.field2,NEW.field2,NOW());
 END IF;
 END$$

 DELIMITER ;

值未插入第二个表但触发器正在运行    触发器无法正常工作

1 个答案:

答案 0 :(得分:0)

  1. 我相信您打算使用 IF 语句而不是 IF() 功能
  2. 触发器after_insert的名称令人困惑,因为您正在使用AFTER UPDATE事件
  3. 在第二个'filed1'声明中还有一些拼写错误'field1'而不是log_date,更重要的是log_data而不是INSERT
  4. 据说你的触发器可能看起来像

    DELIMITER $$
    CREATE TRIGGER user_data_after_update
    AFTER UPDATE ON user_data
    FOR EACH ROW 
    BEGIN
        IF NEW.field1 != OLD.field1 THEN
            INSERT INTO logs_data(uri, field_id, old_value, new_value, modified_date)
            VALUES(NEW.uri, 'field1', OLD.field1, NEW.field1, NOW());
        END IF;
        IF NEW.field2 != OLD.field2 THEN
            INSERT INTO logs_data(uri, field_id, old_value, new_value, modified_date)
            VALUES(NEW.uri, 'field2', OLD.field2, NEW.field2, NOW());
        END IF;
    END$$
    DELIMITER ;
    

    这是 SQLFiddle 演示