MYSQL触发器使用case语句设置日期时间值

我正在使用mysqlimport进行批量表插入(替换重复的主键).几个表具有日期时间列,记录中包含值“ 0000-00-00”.我想要的是一个触发器,该触发器检测这些“ 0000-00-00”值并替换为“ 1950-01-01”,否则将datetime值保留在记录中(即,当它不是“ 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

工作:

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中触发,


下一篇:MySQL触发器不知道默认值