[mysql] trigger et drop table

Fermé
fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 - 23 févr. 2010 à 11:15
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 - 25 févr. 2010 à 11:07
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 :
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:

2 réponses

Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 330
23 févr. 2010 à 20:57
On dirait que ce n'est pas possible, effectivement :
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.
1
fxtaa Messages postés 1050 Date d'inscription mardi 20 octobre 2009 Statut Membre Dernière intervention 2 avril 2015 74
24 févr. 2010 à 10:49
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)
0
Yoan Messages postés 11795 Date d'inscription mardi 1 février 2005 Statut Modérateur Dernière intervention 10 décembre 2023 2 330
25 févr. 2010 à 11:07
Ben comme tu le vois dans la doc, oui.

Avec Postgres si je me souviens bien il faut virer tous les triggers avant de virer la table à laquelle ils sont associés, sans quoi la table ne peut être supprimée pour des pb de dépendance.
0