Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 基于时间的触发器_Mysql - Fatal编程技术网

Mysql 基于时间的触发器

Mysql 基于时间的触发器,mysql,Mysql,我正在编写一个项目,我需要在MySQL中使用一个基于时间的触发器。在这个项目中,有一个预约模块,限制15天。这15天结束后,必须触发触发器并将新的15天插入表中。我如何在MySQL中做到这一点?您的代码有很多问题: 使用分隔符,如中所述 如中所述,每15天在中的天结束时不得有S 文档中说“与存储例程一样,您可以通过使用BEGIN和END关键字在DO子句中使用复合语句语法”,因此必须在第一个DO关键字之后添加BEGIN关键字 表示代码必须包含在搜索时的和搜索时的之间 在您的INSERT中,da

我正在编写一个项目,我需要在MySQL中使用一个基于时间的触发器。在这个项目中,有一个预约模块,限制15天。这15天结束后,必须触发触发器并将新的15天插入表中。我如何在MySQL中做到这一点?

您的代码有很多问题:

  • 使用分隔符,如中所述
  • 如中所述,
    每15天在
    中的
    天结束时不得有
    S
  • 文档中说“与存储例程一样,您可以通过使用BEGIN和END关键字在DO子句中使用复合语句语法”,因此必须在第一个
    DO
    关键字之后添加
    BEGIN
    关键字
  • 表示代码必须包含在搜索时的
    和搜索时的
    之间
  • 在您的
    INSERT
    中,
    day
    是一个字段:将其括在反勾中,而不是引号中
固定代码

DELIMITER $$$
CREATE EVENT autoDayInsert ON SCHEDULE EVERY 15 DAY DO BEGIN
    SET @dayCounter = 0;
    WHILE @dayCounter < 15 DO
        INSERT INTO appointmentDays(`day`) VALUES(NOW() + INTERVAL @dayCounter DAY);
        SET @dayCounter = @dayCounter +1;
    END WHILE;
END $$$
DELIMITER ;
分隔符$$$
按计划每15天创建事件autoDayInsert开始
设置@dayCounter=0;
而@dayCounter<15 DO
在appointmentDays(`day`)值中插入(NOW()+INTERVAL@dayCounter-day);
设置@dayCounter=@dayCounter+1;
结束时;
结束$$$
定界符;

我建议你阅读我在回答中给出的链接。将来遇到问题时,请参阅官方文档:文档中提供的信息准确且最新,并且几乎总是附带许多示例来帮助理解要使用的语法。

您的代码存在许多问题:

  • 使用分隔符,如中所述
  • 如中所述,
    每15天在
    中的
    天结束时不得有
    S
  • 文档中说“与存储例程一样,您可以通过使用BEGIN和END关键字在DO子句中使用复合语句语法”,因此必须在第一个
    DO
    关键字之后添加
    BEGIN
    关键字
  • 表示代码必须包含在搜索时的
    和搜索时的
    之间
  • 在您的
    INSERT
    中,
    day
    是一个字段:将其括在反勾中,而不是引号中
固定代码

DELIMITER $$$
CREATE EVENT autoDayInsert ON SCHEDULE EVERY 15 DAY DO BEGIN
    SET @dayCounter = 0;
    WHILE @dayCounter < 15 DO
        INSERT INTO appointmentDays(`day`) VALUES(NOW() + INTERVAL @dayCounter DAY);
        SET @dayCounter = @dayCounter +1;
    END WHILE;
END $$$
DELIMITER ;
分隔符$$$
按计划每15天创建事件autoDayInsert开始
设置@dayCounter=0;
而@dayCounter<15 DO
在appointmentDays(`day`)值中插入(NOW()+INTERVAL@dayCounter-day);
设置@dayCounter=@dayCounter+1;
结束时;
结束$$$
定界符;

我建议你阅读我在回答中给出的链接。将来遇到问题时,请参考官方文件:其中提供的信息准确且最新,而且几乎总是有很多例子来帮助理解要使用的语法。

我想您是在寻找
事件调度程序
而不是
触发器
触发器是在操作时触发的,并且在时间间隔内执行的代码是使用事件调度程序处理的,因为这些都是事件。就像我之前评论正确的人一样,您需要执行存储过程或插入序列的事件调度器,这是您的选择。谢谢您的评论。我又有问题了。我试图使用此事件代码,但mysql不接受此代码。错误在哪里?单击问题下方的“编辑”并将代码直接添加到问题中。我猜您正在查找
事件调度程序
而不是
触发器
触发器是在操作时触发的,并且使用事件调度程序处理按时间间隔执行的代码,因为这些都是事件。就像我之前评论正确的人一样,您需要执行存储过程或插入序列的事件调度器,这是您的选择。谢谢您的评论。我又有问题了。我试图使用此事件代码,但mysql不接受此代码。错误在哪里?单击问题下方的“编辑”,并将代码直接添加到问题中。