gpt4 book ai didi

mysql - 未插入其他表中的值

转载 作者:行者123 更新时间:2023-11-30 01:24:47 25 4
gpt4 key购买 nike

    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. 我相信您打算使用 IF 语句代替 IF() 功能
  2. 触发器的名称 after_insert 令人困惑,因为您使用的是 AFTER UPDATE 事件
  3. 还有一些拼写错误 '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 演示

关于mysql - 未插入其他表中的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18132439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com