这是我的触发器。在event
中更新一行不会在sf_timestamp
中设置日期/时间字符串。触发器的新手,所以我不确定如何调试。
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 $$
建议?
答案 0 :(得分:1)
除非您的更新语句包含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 $$
答案 1 :(得分:1)
定义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 ;
答案 2 :(得分:0)
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建议,这对我有用