【发布时间】:2017-01-23 12:40:07
【问题描述】:
我有一个小问题。
我想在 MySQL 中插入一个名为 date 的时间戳字段的表。
如果我使用带有 str_to_date 的查询进行常规插入,则效果很好。 但是,我的程序不支持在查询中使用函数。 所以我需要找到另一种方法,我正在考虑使用触发器,例如:
DELIMITER //
CREATE TRIGGER audit_oracle_date
BEFORE INSERT ON audit_oracle FOR EACH ROW
BEGIN
SET NEW.date = STR_TO_DATE(NEW.date, "%d %b %Y %H:%i:%s");
END
//
DELIMITER ;
但它不起作用。触发器已创建,但在尝试输入如下查询时:
insert into audit_oracle values("20 Jan 2017 18:01:25","IFOMCP00","sdfdsfds","zerzerez","aaaa","SYSDBA","1","'select * from bla'","ddd","eee","2")
它给了我一条错误消息,说“日期字段不能为 NULL”
请知道如何编写此触发器的代码?
一个常规的、有效的查询(带有 str_to_date)例如:
insert into audit_oracle values(str_to_date("20 Jan 2017 18:01:25", "%d %b %Y %H:%i:%s"),"IFOMCP00","sdfdsfds","zerzerez","aaaa","SYSDBA","1","blabla","ddd","eee","2")
再次感谢! 问候,
【问题讨论】:
-
为什么不修复程序以“正确”发送数据? (如果需要,当然可以包括对
str_to_date的嵌入式调用) -
你好,因为不是我自己写的程序,所以叫syslog-NG(著名的日志管理程序,可以写入MySQL数据库,但是非常有限)
标签: mysql date triggers insert