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,
...
)
然后您可以插入带有日期设置的数据,如果您不提供日期,则将使用默认日期。
我有一个触发器,如果没有像这样在插入语句中设置日期,它会设置一个日期:
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,
...
)
然后您可以插入带有日期设置的数据,如果您不提供日期,则将使用默认日期。