我需要每年12月31日晚上11:59在MySql表中插入一条记录。
MySql数据库存储在Ubuntu系统中 我不知道它是否可以直接在MySql中完成,或者我是否需要在Ubuntu中创建一个shell脚本。
如果有人对此有所了解......
感谢。
答案 0 :(得分:3)
您可以使用调度程序: 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 :(得分:1)
创建活动 - CREATE EVENT。 设置间隔 - 年,并设置数据和开始时间。
答案 2 :(得分:1)
如果您愿意,最好使用 MySQL 来使用触发器 在DB中的某些事件上插入数据。
您可以使用一些调度程序框架以编程方式执行此操作 比如 Quartz 会调用你的插入DAO方法。
最简单的就是拥有一个带 Cron的脚本 作业/脚本,直接连接到您的数据库和插入 指定时间间隔内的数据。
答案 3 :(得分:1)
如果我没弄错,从MySQL 5.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”。
如果没有,请告诉我们。
供您参考:
BTW:我宁愿不坚持使用crontab脚本......为了配置crontab,你需要不同的权限集来访问mysql。即便如此,在某些情况下它仍然是一个不错的选择。