mysql - 如何在daychange时自动添加数据库行

标签 mysql events

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

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

我正在寻找类似的东西

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

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

最佳答案

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

示例:

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 Syntax

事件调度程序的默认状态为“禁用”。
您需要通过以下任何语句来启用它。

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 Event Scheduler Configuration

关于mysql - 如何在daychange时自动添加数据库行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11245568/

相关文章:

mysql - 子查询中的 GROUP_CONCAT 产生不可预测的结果

events - Kentico - 自动电子邮件确认 - 事件预订系统

Javascript事件语法问题

java - 如何强制对组件执行操作?

c# - Xamarin.Forms 中的多个阶梯 slider

c# - 事件、委托(delegate)、回调、INotifyPropertyChanged

PHP 用户搜索,包含多个元素的表

php 和 mysql mysql_fetch_row

mysql - 无法检索左连接上的内容

python - 使用另一个 WS 作为验证 Flask/Rest/Mysql