我创建了一个如下所示的存储过程:
-- --------------------------------------------------------------------------------
-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$
CREATE DEFINER=`MailMe`@`%` PROCEDURE `sp_archivev3`()
BEGIN
INSERT INTO
send.sgev3_archive(a_bi,
b_vc,
c_int,
d_int,
e_vc,
f_vc,
g_vc,
h_vc,
i_dt,
j_vc,
k_vc,
l_vc,
m_dt,
n_vch,
o_bit)
SELECT a_bi,
b_vc,
c_int,
d_int,
e_vc,
f_vc,
g_vc,
h_vc,
i_dt,
j_vc,
k_vc,
l_vc,
m_dt,
n_vch,
o_bit
FROM send.sgev3
WHERE m_dt BETWEEN CURDATE() - INTERVAL 1 DAY AND CURDATE();
END
现在,我尝试在上述存储过程中创建一个事件,如下所示:
<小时/>-- Routine DDL
-- Note: comments before and after the routine body will not be stored by the server
-- --------------------------------------------------------------------------------
DELIMITER $$
CREATE DEFINER=`MailMe`@`%` PROCEDURE `sp_archivev3`()
EVENT archivescheduler
ON SCHEDULE
EVERY 10 SECOND
DO BEGIN
INSERT INTO
send.sgev3_archive(a_bi,
b_vc,
c_int,
d_int,
e_vc,
f_vc,
g_vc,
h_vc,
i_dt,
j_vc,
k_vc,
l_vc,
m_dt,
n_vch,
o_bit)
SELECT a_bi,
b_vc,
c_int,
d_int,
e_vc,
f_vc,
g_vc,
h_vc,
i_dt,
j_vc,
k_vc,
l_vc,
m_dt,
n_vch,
o_bit
FROM send.sgev3
WHERE m_dt BETWEEN CURDATE() - INTERVAL 1 DAY AND CURDATE();
END
在上面的代码中,我在 EVENT archivescheduler
行上看到了一个十字
符号。我正在关注以下documentation在 MySQL 网站上。难道我做错了什么?
我怀疑的是,由于我之前已经创建了存储过程并且我正在尝试创建一个存储过程,因此这可能会产生一些问题。请让我知道我做错了什么?
作为错误的 MySQLWORKbench 的小屏幕截图:
谢谢
最佳答案
根据文档,您无法在过程体内创建事件。看这篇文章Create an event inside a procedure - SQL .
您必须首先创建过程,然后从事件中调用它,如下所示
DELIMITER $$
CREATE DEFINER=`MailMe`@`%` PROCEDURE `sp_archivev3`()
BEGIN
INSERT INTO
send.sgev3_archive(a_bi,
b_vc,
c_int,
d_int,
e_vc,
<Rest of the code goes here>
然后创建调用该过程的事件
DELIMITER $$
CREATE EVENT archivescheduler
ON SCHEDULE EVERY 10 SECOND
DO BEGIN
CALL `sp_archivev3`();
END $$
DELIMITER ;
另一个提示:如果你的存储过程没有从事件中触发;您可能需要检查GLOBAL EVENT SCHEDULER
是否处于DISABLE
状态。您可以使用以下设置将其打开
SET GLOBAL event_scheduler = ON;
关于mysql - 在 mysql workbench 5.5 上定义事件名称时出现错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24212273/