使用MariaDB10.5.13可以在过程中创建事件吗?
原因是我希望有一个过程,我可以手动触发,然后运行一次事件3-4小时后。
我不知道是因为语法错误还是因为这是不允许的
如果可能的话,你将如何创建一个只睡60分钟的过程,然后创建一个事件在4小时内再次运行,并睡上80年代(只需要学习语法,里面的查询就不重要了)
发布于 2022-05-06 06:08:43
不能在存储过程中创建事件过程。
原因是我希望有一个过程,我可以手动触发,然后运行一次事件3-4小时后。
这很简单。您的数据库(S)或任何服务或系统数据库中是否有服务表?如果没有,那么创建它,就像
CREATE TABLE serviceDB.serviceTable (
domainName VARCHAR(255),
parameterName VARCHAR(255),
parameterValue LONGBLOB,
PRIMARY KEY (domainName, parameterName)
);现在,您创建了一个类似于
INSERT INTO serviceDB.serviceTable (domainName, parameterName, parameterValue)
VALUES ('myApplication', 'executeMyEventProcedure', NOW() + INTERVAL 4 HOURS);如果设置了执行,则事件过程将检查此参数值并执行该操作:
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;
ENDhttps://dba.stackexchange.com/questions/311753
复制相似问题