我有一个表保留详细信息,其中包含列,其中一列是创建日期。 我想创建一个触发器,检查创建日期是否是一年的第一天。如果是,则将值插入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然后..它不应该插入我插入的行。
答案 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)天完全没用,看起来像是开销。