0

我是数据库新手,所以我有这张表,我想编写某种脚本来每天添加或更改行。最好是在当天变化的时候。

MySQL-Workbench 显然只支持 lua & python 脚本,我不知道语法。

我正在寻找类似的东西

onDaychange(){
    SQL-query(INSERT ...)
    SQL-query(UPDATE ...)
}

否则我必须在服务器上运行一个永久的 c# 或 java 程序。

4

2 回答 2

1

您需要 MySQLevent按时间运行。
您可以根据需要安排调用存储过程。

示例

delimiter //
drop event if exists event_scheduling_sample;

create event if not exists event_scheduling_sample
--  on schedule every 86400 second starts 00:00:00
--  at timestamp( adddate( current_date, 1 ),'00:00:00' )
--  on schedule every 1 day starts current_timestamp ends current_timestamp + interval '5' day
--  on schedule every 1 day starts current_timestamp ends timestamp( current_date,'23:59:59' )
  on schedule every 1 day starts timestamp( current_date + 1, '00:00:01' )

  comment 'event scheduling sample'
  do
    call db_name.procedure_name();
;
//
delimiter ;

参考:CREATE EVENT 语法

Event Scheduler 的默认状态为 DISABLED。
您需要通过以下任一语句启用它。

SET GLOBAL event_scheduler = ON;
SET @@global.event_scheduler = ON;
SET GLOBAL event_scheduler = 1;
SET @@global.event_scheduler = 1;

当事件调度器打开时,事件调度器线程作为守护进程列在输出中SHOW PROCESSLIST,其状态如下所示:

mysql> SHOW PROCESSLIST\G
*************************** 1. row ***************************
     Id: 1
   User: root
   Host: localhost
     db: NULL
Command: Query
   Time: 0
  State: NULL
   Info: show processlist
*************************** 2. row ***************************
     Id: 2
   User: event_scheduler
   Host: localhost
     db: NULL
Command: Daemon
   Time: 3
  State: Waiting for next activation
   Info: NULL
2 rows in set (0.00 sec)

将事件调度程序设置为 ON 后,您会看到它正在工作。

参考MySQL 事件调度器配置

于 2012-06-28T13:26:21.957 回答
0

您可以为此脚本使用 Cron Job。Cron 是类 Unix 计算机操作系统中基于时间的作业调度程序。cron 使用户能够安排作业(命令或 shell 脚本)在特定时间或日期定期运行。它通常用于自动化系统维护或管理,尽管它的通用性质意味着它可以用于其他目的,例如连接到 Internet

定时文件

mysql_query("INSERT INTO table (`text`,`date`) VALUES (testing','2012-6-25')");
//According to Date Condtion
mysql_query("UPDATE table SET `text`='testing2',`date`='2012-06-28'");
于 2012-06-28T13:31:28.720 回答