1

我正在尝试运行查询:

SET @Curr_Weekday := DAYOFWEEK(CURRENT_DATE);

INSERT INTO daily_calibrations (`calibration_date`, `machine_ID`)
SELECT *
FROM
(
  SELECT CURRENT_DATE, 37 FROM dual
  UNION ALL
  SELECT CURRENT_DATE, 38 FROM dual
  UNION ALL
  SELECT CURRENT_DATE, 39 FROM dual 
  UNION ALL
  SELECT CURRENT_DATE, 40 FROM dual
  UNION ALL
  SELECT CURRENT_DATE, 41 FROM dual
  UNION ALL
  SELECT CURRENT_DATE, 42 FROM dual
  UNION ALL
  SELECT CURRENT_DATE, 43 FROM dual
  UNION ALL
  SELECT CURRENT_DATE, 44 FROM dual
  UNION ALL
  SELECT CURRENT_DATE, 48 FROM dual
  UNION ALL
  SELECT CURRENT_DATE, 49 FROM dual
) tmp
WHERE @Curr_Weekday <> 1

当我从 phpMyAdmin 控制台运行它时它工作正常,所有行都被添加但是由于某种原因,当我尝试将它安排为事件时我得到一个错误:

MySQL 说:#1064 - 你的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 3 行的“INSERT INTO daily_calibrations ( calibration_date, machine_ID) SELECT * FRO”附近使用正确的语法

4

1 回答 1

0

解决了(感谢您的帮助@Shadow

DELIMITER $$

CREATE DEFINER=`root`@`localhost` 
EVENT `add_daily_calib` 
ON SCHEDULE EVERY 1 DAY STARTS '2017-10-25 00:01:00' 
ON COMPLETION PRESERVE ENABLE 
COMMENT 'Add calibrations everyday' 
DO 
BEGIN
SET @Curr_Weekday := DAYOFWEEK(CURRENT_DATE);

INSERT INTO daily_calibrations (`calibration_date`, `machine_ID`)
SELECT *
FROM
(
  SELECT CURRENT_DATE, 37 FROM dual
  UNION ALL
  SELECT CURRENT_DATE, 38 FROM dual
  UNION ALL
  SELECT CURRENT_DATE, 39 FROM dual 
  UNION ALL
  SELECT CURRENT_DATE, 40 FROM dual
  UNION ALL
  SELECT CURRENT_DATE, 41 FROM dual
  UNION ALL
  SELECT CURRENT_DATE, 42 FROM dual
  UNION ALL
  SELECT CURRENT_DATE, 43 FROM dual
  UNION ALL
  SELECT CURRENT_DATE, 44 FROM dual
  UNION ALL
  SELECT CURRENT_DATE, 48 FROM dual
  UNION ALL
  SELECT CURRENT_DATE, 49 FROM dual
) tmp
WHERE @Curr_Weekday <> 1;
END $$

我已经通过 phpMyAdmin 控制台创建了事件。当我查看事件定义时,它会下降DEMILITER $$END $$分开,但我已经对其进行了测试并且工作正常。

于 2017-10-25T11:02:27.847 回答