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 ;
这是我的触发器。更新 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 ;