mysql中的事件调度器

mysql中的事件调度器,mysql,Mysql,这是我为mysql编写的事件调度器,但我在statemnet附近不断得到错误的语法行,任何帮助都会非常有用 谢谢。您必须在变量前面加上@,否则MySQL会假定它们是系统变量(Total不是其中之一)或表中的列名,所以 Create EVENT event_test_name ON SCHEDULE EVERY 1 MINUTE STARTS '2010-09-02 12:10:15' ON COMPLETION NOT PRESERVE ENABLE DO SET Total=-1; SET

这是我为mysql编写的事件调度器,但我在statemnet附近不断得到错误的语法行,任何帮助都会非常有用


谢谢。

您必须在变量前面加上
@
,否则MySQL会假定它们是系统变量(Total不是其中之一)或表中的列名,所以

Create EVENT event_test_name ON SCHEDULE EVERY 1 MINUTE STARTS '2010-09-02 12:10:15' ON COMPLETION NOT PRESERVE ENABLE 
DO 
SET Total=-1;
SET Total = (SELECT COUNT(0) FROM schema1.table1);
SELECT Total;
 IF Total >50000 THEN
insert into schema2.table1 (column1) 
select schema1.table1.column1 from schema1.table1;
end if;

诸如此类。

为什么要另开一个帐户来发布问题?是的,我也试过了,我得到了错误代码:1064您的SQL语法有错误;查看与您的MySQL服务器版本对应的手册,了解要使用的正确语法,例如“IF@Total>50000然后插入schema2.table1(第1列)选择schema1.table”第1行,我认为应该使用
:=
(而不是
=
).PS:我从SQL Yog运行这些查询。@sharpeye500:我使用mysql已经7年了,从3.23到目前的5.1,我一直在使用这种语法。我不敢相信它不起作用。哦,对不起,zerkms,我再试了一次,它接受:=和=,但这并不能解决我的问题,我被以下错误击中:您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以获得正确的语法,以便在“IF@Total>50000”附近使用,然后错误代码:1064您的SQL语法有错误;检查与MySQL服务器版本对应的手册,以了解第1行“end if”附近使用的正确语法
...
SET @Total=-1;
SET @Total = (SELECT ...);
SELECT @Total;
IF @Total > ...