0

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

 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 那么..它不应该插入我正在插入的行。

4

1 回答 1

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) 天完全没用,看起来像是开销。

于 2013-09-10T17:27:38.760 回答