MySQL 触发器未将 Date/Time 字符串插入列

MySQL Trigger Is Not Inserting Date/Time String Into Column

这是我的触发器。更新 event 中的行不会在 sf_timestamp 中设置 date/time 字符串。触发器新手,所以我不确定如何调试。

DELIMITER $$

CREATE DEFINER = `root`@`localhost` TRIGGER `event_stamp` 
BEFORE UPDATE ON `event` 

FOR EACH ROW 
  BEGIN
      SET NEW.sf_timestamp = DATE_FORMAT(NOW(),'%Y-%m-%d %T');
  END;;

DELIMITER $$

建议?

除非您的更新语句包含 sf_timestamp 的值,否则该字段可能没有要格式化的值。如果您试图更新时间戳以表示记录更新的时间,为什么不直接使用当前时间呢?

DELIMITER $$

CREATE DEFINER = `root`@`localhost` TRIGGER `event_stamp` BEFORE UPDATE ON `event` 
FOR EACH ROW 
    BEGIN
        SET NEW.sf_timestamp = now();
    END;;

DELIMITER $$
DELIMITER $$

CREATE DEFINER = `root`@`localhost` TRIGGER `event_stamp`     
BEFORE UPDATE ON `event` 
FOR EACH ROW 
    BEGIN
        SET NEW.sf_timestamp = DATE_FORMAT(NOW(),'%Y-%m-%d %T');
    END$$

DELIMITER ;

遵循@pensums 的建议,这对我有用

当您定义 DELIMITER 时,您需要保留相同的分隔符,直到您完成要声明的块。在这种情况下,您正在尝试创建一个新触发器并且您需要 MySQL 将具有多行的整个块解释为一个并以默认 ;

结束它们

但是当你完成后,你必须END你之前设置的DELIMITER如下:

DELIMITER $$

CREATE DEFINER = `root`@`localhost` TRIGGER `event_stamp` 
BEFORE UPDATE ON `event` 

FOR EACH ROW 
  BEGIN
      SET NEW.sf_timestamp = DATE_FORMAT(NOW(),'%Y-%m-%d %T');
  END$$

DELIMITER ;