
我们知道,事件过期后会自动删除,并且我们无法从 SHOW EVENTS 语句中看到它。要改变这种行为,我们可以在创建事件时使用 ON COMPLETION PRESERVE。可以通过以下示例来理解 –
示例
mysql> Create table event_messages(ID INT NOT NULL PRIMARY KEY AUTO_INCREMENT, MESSAGE VARCHAR(255) NOT NULL, Generated_at DATETIME NOT NULL);Query OK, 0 rows affected (0.61 sec)
以下查询将在不使用 ON COMPLETION PRESERVE 的情况下创建事件,因此在 SHOW EVENTS FROM db_name 查询的输出中不会看到该事件。
AI建筑知识问答
用人工智能ChatGPT帮你解答所有建筑问题
22 查看详情
mysql> CREATE EVENT testing_event_without_Preserves ON SCHEDULE AT CURRENT_TIMESTAMP DO INSERT INTO event_messages(message,generated_at) Values('Without Preserve',NOW());Query OK, 0 rows affected (0.00 sec)mysql> Select * from event_messages;+----+------------------+---------------------+| ID | MESSAGE | Generated_at |+----+------------------+---------------------+| 1 | Without Preserve | 2017-11-22 20:32:13 |+----+------------------+---------------------+1 row in set (0.00 sec)mysql> SHOW EVENTS FROM queryG*************************** 1. row *************************** Db: query Name: testing_event5 Definer: root@localhost Time zone: SYSTEM Type: ONE TIME Execute at: 2017-11-22 17:09:11 Interval value: NULL Interval field: NULL Starts: NULL Ends: NULL Status: DISABLED Originator: 0character_set_client: cp850collation_connection: cp850_general_ci Database Collation: latin1_swedish_ci1 row in set (0.00 sec)
以下查询将使用 ON COMPLETION PRESERVE 创建一个事件,因此可以在 SHOW EVENTS FROM db_name 查询的输出中看到该事件。
mysql> CREATE EVENT testing_event_with_Preserves ON SCHEDULE AT CURRENT_TIMESTAMP ON COMPLETION PRESERVE DO INSERT INTO event_messages(message,generated_at) Values('With Preserve',NOW());Query OK, 0 rows affected (0.00 sec)mysql> Select * from event_messages;+----+------------------+---------------------+| ID | MESSAGE | Generated_at |+----+------------------+---------------------+| 1 | Without Preserve | 2017-11-22 20:32:13 || 2 | With Preserve | 2017-11-22 20:35:12 |+----+------------------+---------------------+2 rows in set (0.00 sec)mysql> SHOW EVENTS FROM queryG*************************** 1. row *************************** Db: query Name: testing_event5 Definer: root@localhost Time zone: SYSTEM Type: ONE TIME Execute at: 2017-11-22 17:09:11 Interval value: NULL Interval field: NULL Starts: NULL Ends: NULL Status: DISABLED Originator: 0character_set_client: cp850collation_connection: cp850_general_ci Database Collation: latin1_swedish_ci*************************** 2. row *************************** Db: query Name: testing_event_with_Preserves Definer: root@localhost Time zone: SYSTEM Type: ONE TIME Execute at: 2017-11-22 20:35:12 Interval value: NULL Interval field: NULL Starts: NULL Ends: NULL Status: DISABLED Originator: 0character_set_client: cp850collation_connection: cp850_general_ci Database Collation: latin1_swedish_ci2 rows in set (0.00 sec)
以上就是创建事件时 ON COMPLETION PRESERVE 子句有什么用?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/226815.html
微信扫一扫
支付宝扫一扫