[mysql] trigger et drop table
fxtaa
Messages postés
1050
Date d'inscription
Statut
Membre
Dernière intervention
-
Yoan Messages postés 11795 Date d'inscription Statut Modérateur Dernière intervention -
Yoan Messages postés 11795 Date d'inscription Statut Modérateur Dernière intervention -
Bonjour,
Je débute dans les triggers et je n'ai rien trouvé concernant des triggers sur des drop table avec MySql (peut être que mysql ne sait pas faire apres tout).
L'evenement est :
Lorsque la table bob est détruite
alors update le champ time de la table timer avec l'heure serveur
où le lieu est le serveur sql
Et en code ca donne :
et l'erreur :
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DROP TABLE ON bob UPDATE timer SET time = 'toto' WHERE lieu='sql'' at line 1
ps : actuellement je met time='toto' et le champs time est en "varchar", je corrigerai les problemes de champs ultérieurement.
info serveur :
* Serveur: localhost via TCP/IP
* Version du serveur: 5.1.31-community
* Version du protocole: 10
* Utilisateur: root@localhost
* Jeu de caractères pour MySQL: UTF-8 Unicode (utf8)
Cordialement, Fxta.
Je débute dans les triggers et je n'ai rien trouvé concernant des triggers sur des drop table avec MySql (peut être que mysql ne sait pas faire apres tout).
L'evenement est :
Lorsque la table bob est détruite
alors update le champ time de la table timer avec l'heure serveur
où le lieu est le serveur sql
Et en code ca donne :
CREATE TRIGGER actu AFTER DROP TABLE ON bob UPDATE timer SET time = NOW() WHERE lieu='sql'
et l'erreur :
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'DROP TABLE ON bob UPDATE timer SET time = 'toto' WHERE lieu='sql'' at line 1
ps : actuellement je met time='toto' et le champs time est en "varchar", je corrigerai les problemes de champs ultérieurement.
info serveur :
* Serveur: localhost via TCP/IP
* Version du serveur: 5.1.31-community
* Version du protocole: 10
* Utilisateur: root@localhost
* Jeu de caractères pour MySQL: UTF-8 Unicode (utf8)
Cordialement, Fxta.
A voir également:
- [mysql] trigger et drop table
- Table ascii - Guide
- Table des matières word - Guide
- Share drop - Télécharger - Téléchargement & Transfert
- Mysql community server - Télécharger - Bases de données
- Table des caractères - Guide
2 réponses
On dirait que ce n'est pas possible, effectivement :
http://dev.mysql.com/doc/refman/5.0/fr/create-trigger.html
Mais bon, en même temps un trigger est directement rattaché à une table (d'où le ON tbl_name), donc si tu détruits une table il faut au préalable détruire ses triggers.
Ce que tu veux faire se réalise peut-être avec la clause DELETE plutôt que DROP. Auquel cas la table est vidée mais toujours existante, donc les triggers associés aussi.
http://dev.mysql.com/doc/refman/5.0/fr/create-trigger.html
CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH ROW trigger_stmt trigger_event indique le type de commande qui active le déclencheur. Il peut valoir INSERT, UPDATE ou DELETE. Par exemple, un déclencheur BEFORE pour une commande INSERT peut être utilisé pour vérifier les valeurs avant leur insertion dans la table.
Mais bon, en même temps un trigger est directement rattaché à une table (d'où le ON tbl_name), donc si tu détruits une table il faut au préalable détruire ses triggers.
Ce que tu veux faire se réalise peut-être avec la clause DELETE plutôt que DROP. Auquel cas la table est vidée mais toujours existante, donc les triggers associés aussi.
Cela veut dire qu'un trigger ne peut pas être associé à une table inexistante?
Je les pensai rattacher à la db et lors d'un événement précis sur une table précise,ils effectuaient une action donnée. (un peu comme un script qui se déclenche sur tel action)
Je les pensai rattacher à la db et lors d'un événement précis sur une table précise,ils effectuaient une action donnée. (un peu comme un script qui se déclenche sur tel action)