0

尝试在 mysql 中创建每日事件:

CREATE EVENT ResetStatus
    ON SCHEDULE
      EVERY 1 DAY
    DO

      BEGIN

            IF (DATE('2013-04-05') = CURDATE()) THEN
                UPDATE mytable
                SET resetstatus = 1
                WHERE id = (SELECT pid FROM usertable WHERE priority = 'A');

            END IF;

      END;

得到一个错误:

Lookup Error - MySQL Database Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 12

如果我将更新语句放入 TOAD 并运行,它运行时不会出现错误。

4

1 回答 1

1

定义存储程序中所述:

如果使用mysql客户端程序定义包含分号字符的存储程序,就会出现问题。默认情况下,mysql本身将分号识别为语句分隔符,因此必须临时重新定义分隔符,以使mysql将整个存储的程序定义传递给服务器。

您需要将您的客户端设置为使用除 之外的语句分隔符;,因为它当前认为它遇到的第一个分号(在UPDATE语句末尾)正在终止CREATE EVENT语句。

在 MySQL 命令行客户端中,可以使用以下DELIMITER 命令

DELIMITER ;;  -- or anything else you like

CREATE EVENT ResetStatus
ON SCHEDULE
  EVERY 1 DAY
DO
  BEGIN

        IF (DATE('2013-04-05') = CURDATE()) THEN
            UPDATE mytable
            SET resetstatus = 1
            WHERE id = (SELECT pid FROM usertable WHERE priority = 'A');

        END IF;

  END
;;

DELIMITER ;  -- return to normal
于 2013-04-05T00:07:52.707 回答