首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在过程中创建事件

在过程中创建事件
EN

Database Administration用户
提问于 2022-05-06 05:06:21
回答 1查看 66关注 0票数 0

使用MariaDB10.5.13可以在过程中创建事件吗?

原因是我希望有一个过程,我可以手动触发,然后运行一次事件3-4小时后。

我不知道是因为语法错误还是因为这是不允许的

如果可能的话,你将如何创建一个只睡60分钟的过程,然后创建一个事件在4小时内再次运行,并睡上80年代(只需要学习语法,里面的查询就不重要了)

EN

回答 1

Database Administration用户

发布于 2022-05-06 06:08:43

不能在存储过程中创建事件过程。

原因是我希望有一个过程,我可以手动触发,然后运行一次事件3-4小时后。

这很简单。您的数据库(S)或任何服务或系统数据库中是否有服务表?如果没有,那么创建它,就像

代码语言:javascript
复制
CREATE TABLE serviceDB.serviceTable (
    domainName VARCHAR(255),
    parameterName VARCHAR(255),
    parameterValue LONGBLOB,
    PRIMARY KEY (domainName, parameterName)
);

现在,您创建了一个类似于

代码语言:javascript
复制
INSERT INTO serviceDB.serviceTable (domainName, parameterName, parameterValue)
VALUES ('myApplication', 'executeMyEventProcedure', NOW() + INTERVAL 4 HOURS);

如果设置了执行,则事件过程将检查此参数值并执行该操作:

代码语言:javascript
复制
CREATE EVENT myEventProcedure
ON SCHEDULE EVERY 1 MINUTE
DO
BEGIN
    IF EXISTS ( SELECT NULL       -- check does we need to perform the proc action 
                FROM serviceDB.serviceTable 
                WHERE domainName = 'myApplication'
                  AND parameterName = 'executeMyEventProcedure'
                  AND parameterValue <= NOW()) THEN
        UPDATE serviceDB.serviceTable      -- reset the flag for to avoid re-launch
        SET parameterValue = NULL
        WHERE domainName = 'myApplication'
          AND parameterName = 'executeMyEventProcedure'
          AND parameterValue <= NOW();
-- perform needed actions
    END IF;
END
票数 0
EN
页面原文内容由Database Administration提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://dba.stackexchange.com/questions/311753

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档