MySQL 调用设置日期过程的触发器

MySQL Trigger that calls a procedure for setting a date

我有一个触发器,如果​​没有像这样在插入语句中设置日期,它会设置一个日期:

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;

但是这不再有效了,有人可以帮忙吗?

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

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

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