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

update ステートメントを取得して TOAD に配置して実行すると、エラーなしで実行されます。

4

1 に答える 1

1

ストアド プログラムの定義に記載されているとおり:

mysqlクライアント プログラムを使用して、セミコロン文字を含むストアド プログラムを定義すると、問題が発生します。デフォルトでは、mysql自体がセミコロンをステートメント区切り文字として認識するため、一時的に区切り文字を再定義して、mysqlがストアド プログラム定義全体をサーバーに渡すようにする必要があります。

クライアントは、(ステートメント;の最後にある) 最初に検出されたセミコロンがステートメントを終了していると現在考えているため、以外のステートメント区切り文字を使用するようにクライアントを設定する必要があります。UPDATECREATE 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 に答える