如何创建触发器来查找一年中的第一天?

时间:2013-09-10 17:19:07

标签: mysql triggers

我有一个表保留详细信息,其中包含列,其中一列是创建日期。 我想创建一个触发器,检查创建日期是否是一年的第一天。如果是,则将值插入master_ids表。我创建了一个触发器,但不知道它是否正确。我的项目是在php。

 CREATE TRIGGER upd_check BEFORE INSERT ON ColdStorage.ReservationDetails
    FOR EACH ROW
 BEGIN
     IF NEW.creationdate = DATE_FORMAT(NOW() ,'%Y-01-01') then 
             UPDATE master_ids SET nextOccId="1",nextResId="1",nextAgrnoId="1",nextRecNo="1";
     END if;
 END;

请给我一些解决方案。我也希望如果日期是01-01-yy然后..它不应该插入我插入的行。

1 个答案:

答案 0 :(得分:1)

您需要更改分隔符。 MySQL看到第一个;作为CREATE TRIGGER语句的结尾,并认为整个语句在那里结束。所以你必须像这样更改分隔符:

/* Change the delimiter */
DELIMITER $$

CREATE TRIGGER upd_check BEFORE INSERT ON ColdStorage.ReservationDetails
FOR EACH ROW
BEGIN
    IF NEW.creationdate = DATE_FORMAT(NOW() ,'%Y-01-01') then 
        insert into master_ids values ('0','0','0','0');
    END if;
END$$
/* the CREATE TRIGGER statement ends with new delimiter */

/* change the delimiter back to ; */
DELIMITER ;

我没有测试过,但看起来很好。困扰我的是,这一年只能工作一天,其他364(365)天完全没用,看起来像是开销。