我正在使用mysqlimport进行批量表插入(替换重复主键)。有几个表的日期时间列包含值'0000-00-00'的记录。我想要的是一个触发器,它会检测这些'0000-00-00'值并替换为'1950-01-01',否则将日期时间值保留在记录中(即当它不是'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部分仍然出现错误。
编辑2
WORKING:
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 ;
答案 0 :(得分:3)
使用IF THEN
:
IF (NEW.date_col = '0000-00-00') THEN
SET NEW.date_col='1950-01-01';
END IF;
答案 1 :(得分:1)
CREATE TRIGGER set_datetime BEFORE INSERT ON tbl
FOR EACH ROW
IF YEAR(NEW.date_col)=0 THEN
SET NEW.date_col='1950-01-01 00:00:00';
END IF;
试一试!!!
答案 2 :(得分:0)
如果您想要或需要使用“案例”,那么这应该有效:
SET NEW.date_col=CASE WHEN NEW.date_col='0000-00-00' THEN ='1950-01-01'
WHEN NEW.date_col='something else' THEN 'whatever'
ELSE 'default'
END CASE;