Mysql - Linux : 在特定日期和时间在 table 中插入一条记录

Mysql - Linux : Insert a record in a table at a specific date and time

我需要在每年 12 月 31 日 11:59pm 的 MySql table 中插入一条记录。

MySql数据库存储在Ubuntu系统中。
我不知道是否可以直接在 MySql 中完成,或者我是否需要在 Ubuntu.

中创建一个 shell 脚本

如果有人对此有想法...

谢谢。

创建一个活动 - CREATE EVENT。 设置间隔 - YEAR,并设置开始的日期和时间。

您可以为此使用调度程序: https://dev.mysql.com/doc/refman/5.1/en/create-event.html

简单的调度程序事件:

DELIMITER $$
CREATE EVENT my_event
ON SCHEDULE EVERY '1' YEAR
STARTS '2015-12-31 23:59:00'
DO 
BEGIN
 -- insert your stuff
END$$

DELIMITER ;

我认为您必须通过将 event_scheduler 设置为 ON 来启用它。

  1. 最好使用 MySQL 可以使用触发器 将数据插入数据库中的某个事件。

  2. 您可以使用一些调度程序框架以编程方式执行此操作 像 Quartz 会调用你的插入 DAO 方法。

  3. 最简单的方法是使用 Cron 脚本 job/script 直接连接到您的数据库并插入的地方 指定时间间隔内的数据。

如果我没记错的话,从MySQL5.1开始我们提供了事件调度。

所以,假设 your_db 可用,你可以这样做:

CREATE DATABASE IF NOT EXISTS your_db;

USE your_db;

CREATE TABLE `some_table` (
  `ev` varchar(100) NOT NULL,
  PRIMARY KEY (`ev`)
);

SET GLOBAL event_scheduler = ON;

CREATE EVENT your_event ON SCHEDULE EVERY 1 MINUTE STARTS '2014-08-20 00:10:00' ON COMPLETION PRESERVE ENABLE
DO
  INSERT INTO your_db.some_table (ev) VALUES (CONCAT_WS(' ', 'En Event Occurred at', NOW()));

安排一个简单的事件每 1 分钟发生一次。

如果它有效(在我的 ubuntu 14.04 盒子上有效),那么我想您只需自定义此代码段即可。您可以将 'MINUTE' 更改为 'YEAR'。

如果没有,请告诉我们。

供您参考:

https://dev.mysql.com/doc/refman/5.1/en/events.html

顺便说一句:我不想坚持使用 crontab 脚本...为了配置 crontab,您需要一组不同于访问 mysql 所需的权限。即便如此,在某些场合下它可能仍然是一个不错的选择。