Maison >base de données >tutoriel mysql >A quoi sert la clause ON COMPLETION PRESERVE lors de la création d'un événement ?
Nous savons que les événements sont automatiquement supprimés après leur expiration, et nous ne pouvons pas le voir dans l'instruction SHOW EVENTS. Pour modifier ce comportement, nous pouvons utiliser ON COMPLETION PRESERVE lors de la création de l'événement. Cela peut être compris à travers l'exemple suivant -
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)
La requête suivante créera l'événement sans utiliser ON COMPLETION PRESERVE, vous ne verrez donc pas l'événement dans la sortie de la requête 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)
La requête suivante créera un événement en utilisant ON COMPLETION PRESERVE afin que vous puissiez voir l'événement dans la sortie de la requête 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)
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!