在建立事件時,啥時使用 ON COMPLETION PRESERVE 子句?
我們知道,當事件過期後,它會自動刪除,並且我們無法從 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 查詢的輸出中看到它。
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 query\G
*************************** 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: 0
character_set_client: cp850
collation_connection: cp850_general_ci
Database Collation: latin1_swedish_ci
1 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 query\G
*************************** 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: 0
character_set_client: cp850
collation_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: 0
character_set_client: cp850
collation_connection: cp850_general_ci
Database Collation: latin1_swedish_ci
2 rows in set (0.00 sec)
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP