基本上,我正在创建一个简单的拍卖网站。我希望代码每晚9点检查一下今天即将到期的项目。如果找到,则应将最高出价者作为买方插入数据库。以下是我到目前为止所做的工作:
DELIMITER $$
CREATE
EVENT `sold`
ON SCHEDULE EVERY 1 DAY STARTS '2018-05-03 21:00:00'
DO BEGIN
declare amt int;
declare counter int;
set counter=0;
set amt = SELECT COUNT(*) FROM ITEMS;
declare test;
while (counter < amt)
begin
set test = select Visibility FROM ITEMS where Keyy = counter;
if (test == 1)
set test = select sold from ITEMS where Keyy = counter;
if (!test)
set test = select Exp from ITEMS where Keyy = counter;
if (test == CURDATE())
UPDATE ITEMS SET `sold`= `bidder` WHERE Keyy =counter;
set counter = counter + 1;
end
END */$$
DELIMITER ;
答案 0 :(得分:0)
MySQL中DECLARE
d变量的标识符不以@
开头;这仅适用于“会话”变量(对于与数据库的连接是全局的)。
此外:
==
不是MySQL中的等号运算符,只是=
set variable = select ...
会出现问题;其中一些可能需要LIMIT 1
条款....虽然看起来你只是检查是否存在数据,但EXISTS
查询可能对这些条款更有帮助。*/
不属于那里,它是关闭阻止评论。另外
仅允许在BEGIN ... END复合语句中使用DECLARE 并且必须在其开头,之前的任何其他陈述。
来自https://dev.mysql.com/doc/refman/8.0/en/declare.html
这意味着您无法交错DECLARE和SET。