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 ;
值未插入第二个表但触发器正在运行 触发器无法正常工作
答案 0 :(得分:0)
IF
语句而不是 IF()
功能after_insert
的名称令人困惑,因为您正在使用AFTER UPDATE
事件'filed1'
声明中还有一些拼写错误'field1'
而不是log_date
,更重要的是log_data
而不是INSERT
。据说你的触发器可能看起来像
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 演示