MySQL 触发器 - 在插入之前更新数据

标签 mysql triggers

我正在尝试创建一个触发器,将输入日期更改为 unix 时间戳。 当我向表中插入一个值时,插入的值为 NULL

CREATE TRIGGER `updateDate` BEFORE INSERT ON  `tl_calendar_events` 
FOR EACH
ROW SET NEW.startDate = UNIX_TIMESTAMP(STR_TO_DATE(NEW.startDate, '%d.%m.%Y'))

“startDate”的输入值类似于 01.11.2013

表定义:

CREATE TABLE IF NOT EXISTS `tl_calendar_events` (
...
`startDate` int(10) unsigned DEFAULT NULL,
...
PRIMARY KEY (`id`),
KEY `pid` (`pid`)
) ENGINE=MyISAM  DEFAULT CHARSET=utf8 AUTO_INCREMENT=66 ;

最佳答案

startDate 列的数据类型更改为 varchar,然后您的上述查询将起作用。使用

`startDate` VARCHAR(10) NULL DEFAULT NULL in your table creation query

或者

您可以将数据类型更改为DATEDATETIME,并在程序中转换为unix时间,在这种情况下,不需要该触发器

关于MySQL 触发器 - 在插入之前更新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15790427/

相关文章:

mysql - 在 Now() 之后返回最近的最近字段

mysql - 将日期转换为 mysql 中的数字(就像日期在 Excel 中的转换方式)

c# - 打印没有预览的 ReportViewer

MySQL 触发器 : move to trash

mysql - RAILS 将触发器添加到迁移中

mysql - 条件触发器语法错误

PHP - 单击提交按钮时,回显结果仅回显第一个结果中的电子邮件地址

sql - T-SQL 仅在列值更改时触发

sql - 使用触发器检查 VARCHAR2 是否仅包含字母

mysql - 使用 C API 的 MySQL 查询中输入参数的语法