我正在尝试创建一个触发器,将输入日期更改为 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
或者
您可以将数据类型更改为DATE
或DATETIME
,并在程序中转换为unix时间,在这种情况下,不需要该触发器
关于MySQL 触发器 - 在插入之前更新数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15790427/