我将从文件批量插入数据,我希望能够使用MySQL而不是后端语言转换数据类型。这就是我正在做的事情,但它不起作用,我无法理解。谢谢!
create table t1 (TEST_DATE DATE);
DELIMITER |
create trigger t1FixDate BEFORE INSERT ON t1
FOR EACH ROW BEGIN
SET NEW.TEST_DATE=STR_TO_DATE(NEW.TEST_DATE, '%c/%e/%Y');
END; |
DELIMITER ;
insert into t1 VALUES ('9/7/2016');
//Error Code: 1292. Incorrect date value: '9/7/2016' for column 'TEST_DATE' at row 1
编辑:以下SQL工作原理。我真的很难过这个。是否在类型检查之前完成了触发器?
create table t2 (TEST_DATE DATE);
insert into t2 VALUES (STR_TO_DATE('9/7/2016', '%c/%e/%Y'));
答案 0 :(得分:0)
根据manual,
关键字BEFORE表示触发操作时间。在这种情况下,触发器在每行插入表格
之前激活
因此,触发器适用于行,已经创建,但未添加到表中。这意味着,您的字符串已分配给数据类型为Date的列,此操作失败(已分配null)。 在调用该触发器之后,它处理null值。