MYSQL触发器使用case语句设置日期时间值 [英] MYSQL Trigger set datetime value using case statement

查看:338
本文介绍了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语句设置日期时间值的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆