本文介绍了MYSQL触发器使用case语句设置日期时间值的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正在使用mysqlimport进行海量表插入(替换重复的主键).几个表具有日期时间列,记录中包含值"0000-00-00".我想要的是一个触发器,该触发器检测这些"0000-00-00"值并替换为"1950-01-01",否则将datetime值保留在记录中(即,当它不是"0000-00-00"时)
I'm using mysqlimport to do mass table inserts (replacing duplicates primary keys). Several tables have date time columns with records containing values '0000-00-00'. What I would like is a trigger which detects these '0000-00-00' values and replaces with '1950-01-01', otherwise keep the datetime value in the record (i.e. when it's not '0000-00-00').
我尝试了以下操作:
CREATE TRIGGER set_datetime BEFORE INSERT ON tbl
FOR EACH ROW
CASE
WHEN date_col='0000-00-00' THEN SET date_col='1950-01-01';
END CASE
谢谢.
编辑
更新尝试:
CREATE TRIGGER set_datetime BEFORE INSERT ON tbl
FOR EACH ROW
IF (NEW.date_col='0000-00-00') THEN
SET NEW.date_col='1950-01-01';
END IF;
在SET部分仍然出现错误.
Still getting an error in the SET portion.
编辑2
工作:
DELIMITER $$
CREATE TRIGGER insert_check BEFORE INSERT ON ar
FOR EACH ROW
BEGIN
IF NEW.delivery_date='0000-00-00' THEN
SET NEW.delivery_date='1950-01-01';
END IF;
END; $$
DELIMITER ;
推荐答案
使用IF THEN
:
IF (NEW.date_col = '0000-00-00') THEN
SET NEW.date_col='1950-01-01';
END IF;
这篇关于MYSQL触发器使用case语句设置日期时间值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!