如何在 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_nameON SCHEDULE AT CURRENT_TIMESTAMP + INTERVAL 1 HOUR
ON COMPLETION NOT PRESERVEDO
BEGIN //TODO: 你想要执行的事情
END
说明:以上代码表示在当前时间的1小时后开始执行,不保留执行完之后的数据。
五、执行事件
使用以下命令可以立即执行一个事件:
“`sql
SET GLOBAL event_scheduler = ON;
这条命令是将事件调度器设置为自动执行,mysql事件将自动发挥作用,不需要额外的操作。
注意事项
1、注意创建事件时,变量类型要与MySQL中的定义一致,否则可能无法创建成功。
2、每次创建事件时,事件名必须唯一,否则将会覆盖已有的事件。
3、当