如何在 MySQL 中成功创建事件:详解步骤及注意事项(mysql创建事件)

如何在 MySQL 中成功创建事件:详解步骤及注意事项

事件是MySQL中重要的一个功能,通过计划任务,我们可以实现定时地做一些事情。相对与我们日常使用的命令进行操作,通过事件定时执行的脚本可以保证任务的及时、高效的执行。本文详细介绍如何在MySQL中成功创建事件,以及在创建事件时要注意的事项。

MySQL中创建事件操作步骤如下:

一、检查MySQL是否支持事件

通过执行以下代码,可以检查MySQL是否支持事件功能:

“`sql

SHOW VARIABLES LIKE ‘have_event’;

如果have_event的值为yes,则表明MySQL支持事件功能;反之,则不支持。
二、检查默认存储引擎是否支持事件

执行以下代码,可以检查默认存储引擎是否支持事件功能:
```sql
SHOW VARIABLES LIKE 'event_scheduler';

如果event_scheduler的值为ON,则表明默认存储引擎支持事件功能;反之,则不支持事件功能。

三、设置mysql.event表

为了能够使用事件,必须在MySQL中设置一个名为mysql.event 的表,其中存储着所有事件的相关参数。可以使用以下命令来创建mysql.event 的表:

“`sql

CREATE TABLE IF NOT EXISTS mysql.event (

db varchar(64) NOT NULL DEFAULT ”,

name varchar(64) NOT NULL,

body longblob NOT NULL,

definer varchar(77) NOT NULL DEFAULT ”,

execute_at datetime DEFAULT NULL,

interval_value int(11) DEFAULT NULL,

interval_field enum(‘YEAR’,’QUARTER’,’MONTH’,’DAY’,’HOUR’,’MINUTE’,’WEEK’,’SECOND’,’MICROSECOND’,’YEAR_MONTH’,’DAY_HOUR’,’DAY_MINUTE’,’DAY_SECOND’,’HOUR_MINUTE’,’HOUR_SECOND’,’MINUTE_SECOND’,’DAY_MICROSECOND’,’HOUR_MICROSECOND’,’MINUTE_MICROSECOND’,’SECOND_MICROSECOND’) DEFAULT NULL,

created timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,

modified timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,

last_executed datetime DEFAULT NULL,

starts datetime DEFAULT NULL,

ends datetime DEFAULT NULL,

status enum(‘ENABLED’,’DISABLED’,’SLAVESIDE_DISABLED’) NOT NULL DEFAULT ‘ENABLED’,

on_completion enum(‘DROP’,’PRESERVE’) NOT NULL DEFAULT ‘PRESERVE’,

sql_mode set(‘REAL_AS_FLOAT’,’PIPES_AS_CONCAT’,’ANSI_QUOTES’,’IGNORE_SPACE’,’NOT_USED’,’ONLY_FULL_GROUP_BY’,’NO_UNSIGNED_SUBTRACTION’,’NO_DIR_IN_CREATE’,’POSTGRESQL’,’ORACLE’,’MSSQL’,’DB2′,’MAXDB’,’NO_KEY_OPTIONS’,’NO_TABLE_OPTIONS’,’NO_FIELD_OPTIONS’,’MYSQL323′,’MYSQL40′,’ANSI’,’NO_AUTO_VALUE_ON_ZERO’,’NO_BACKSLASH_ESCAPES’,’STRICT_TRANS_TABLES’,’STRICT_ALL_TABLES’,’NO_ZERO_IN_DATE’,’NO_ZERO_DATE’,’INVALID_DATES’,’ERROR_FOR_DIVISION_BY_ZERO’,’TRADITIONAL’,’NO_AUTO_CREATE_USER’,’HIGH_NOT_PRECEDENCE’,’NO_ENGINE_SUBSTITUTION’,’PAD_CHAR_TO_FULL_LENGTH’,’EMPTY_STRING_IS_NULL’),

comment varchar(64) NOT NULL DEFAULT ”,

originator int(10) unsigned NOT NULL,

time_zone varchar(64) NOT NULL DEFAULT ‘SYSTEM’,

character_set_client varchar(32) NOT NULL DEFAULT ‘utf8’,

collation_connection varchar(32) NOT NULL DEFAULT ‘utf8_general_ci’,

db_collation varchar(32) NOT NULL DEFAULT ‘utf8_general_ci’,

body_utf8 longblob,

PRIMARY KEY (db, name)

) ENGINE=MyISAM DEFAULT CHARSET=utf8;


四、创建事件

使用以下代码创建一个新的事件:
```sql
CREATE EVENT event_name
ON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
ON COMPLETION NOT PRESERVE
DO
BEGIN
//TODO: 你想要执行的事情
END

说明:以上代码表示在当前时间的1小时后开始执行,不保留执行完之后的数据。

五、执行事件

使用以下命令可以立即执行一个事件:

“`sql

SET GLOBAL event_scheduler = ON;

这条命令是将事件调度器设置为自动执行,mysql事件将自动发挥作用,不需要额外的操作。
注意事项

1、注意创建事件时,变量类型要与MySQL中的定义一致,否则可能无法创建成功。

2、每次创建事件时,事件名必须唯一,否则将会覆盖已有的事件。

3、当

数据运维技术 » 如何在 MySQL 中成功创建事件:详解步骤及注意事项(mysql创建事件)