调用设置日期

时间:2016-05-22 11:11:53

标签: mysql triggers procedure

如果没有在insert语句中设置日期,我有一个触发器设置日期:

CREATE TRIGGER checkData
BEFORE INSERT ON students
FOR EACH ROW
BEGIN
    IF NEW.schoolDate is null THEN
        SET NEW.schooldate=date(now());
    END IF;
END;

效果很好。但是现在我想在这样的程序中包含它:

create procedure checkdate(setDate date)
begin
    if setDate is null then
                set setDate = date(now());
    end if;
END;

我将触发器更改为:

CREATE TRIGGER checkData
BEFORE INSERT ON students
FOR EACH ROW
BEGIN
    call checkdate(NEW.schoolDate);
END;

但是这不再有用了吗?

1 个答案:

答案 0 :(得分:0)

使用默认值而不是触发器。将表结构更改为

create table students
(
    ...
    schoolDate datetime not null default current_timestamp,
    ...
)

然后您可以插入带有日期设置的数据,如果您没有提供日期,则会使用默认值。