Partie II
Programmation procédurale
278
© Éditions Eyrolles
Restrictions
Pour en finir avec les déclencheurs, je vais terminer la « litanie »…
• Pas de déclencheur sur une table temporaire ou une vue, ou sur un événement système
(connexion, arrêt de la base, etc.).
• Pas de possibilité de combiner plusieurs événements par 2 ou par 3 (INSERT OR UPDATE,
INSERT OR DELETE, etc.).
• Les déclencheurs état (statement trigger) ne sont pas encore reconnus.
• Il n’est pas possible de désactiver un déclencheur sans le détruire.
• Les déclencheurs ne peuvent être écrits qu’avec le langage procédural de MySQL (qui sert
aussi aux procédures et aux fonctions cataloguées).
• Un déclencheur ne peut constituer aucune transaction, ainsi les instructions suivantes sont
interdites : COMMIT, ROLLBACK, SAVEPOINT, START TRANSACTION et SET CONSTRAINT.
• Les déclencheurs ne sont pas activés par des actions en cascade résultant d’opérations sur
des clés primaires ou étrangères (CASCADE voir le chapitre 2).
Suppression d’un déclencheur
Pour pouvoir supprimer un déclencheur, vous devez disposer du privilège SUPER (le privilège
DROP TRIGGER est à venir). La syntaxe de l’instruction DROP TRIGGER est la suivante :
DROP TRIGGER [nomBase.]nomDéclencheur;
Si le nom de la base est omis, MySQL cherchera à détruire le déclencheur dans la base de
données en cours d’utilisation.
Le fait de détruire une table a pour conséquence d’effacer aussi tous les déclencheurs qui lui
sont associés.
Le fait de détruire une base supprime toutes les tables. Par conséquent, les déclencheurs passent ainsi tous « à la casserole ».
SQL dynamique
MySQL parle de server-side prepared statements (états préparés) pour évoquer le fait de
pouvoir programmer en SQL dynamique. En plus des directives SQL (LMD, LID), il est
possible de construire automatiquement certaines instructions SQL du LDD.
Programmation procédurale
278
© Éditions Eyrolles
Restrictions
Pour en finir avec les déclencheurs, je vais terminer la « litanie »…
• Pas de déclencheur sur une table temporaire ou une vue, ou sur un événement système
(connexion, arrêt de la base, etc.).
• Pas de possibilité de combiner plusieurs événements par 2 ou par 3 (INSERT OR UPDATE,
INSERT OR DELETE, etc.).
• Les déclencheurs état (statement trigger) ne sont pas encore reconnus.
• Il n’est pas possible de désactiver un déclencheur sans le détruire.
• Les déclencheurs ne peuvent être écrits qu’avec le langage procédural de MySQL (qui sert
aussi aux procédures et aux fonctions cataloguées).
• Un déclencheur ne peut constituer aucune transaction, ainsi les instructions suivantes sont
interdites : COMMIT, ROLLBACK, SAVEPOINT, START TRANSACTION et SET CONSTRAINT.
• Les déclencheurs ne sont pas activés par des actions en cascade résultant d’opérations sur
des clés primaires ou étrangères (CASCADE voir le chapitre 2).
Suppression d’un déclencheur
Pour pouvoir supprimer un déclencheur, vous devez disposer du privilège SUPER (le privilège
DROP TRIGGER est à venir). La syntaxe de l’instruction DROP TRIGGER est la suivante :
DROP TRIGGER [nomBase.]nomDéclencheur;
Si le nom de la base est omis, MySQL cherchera à détruire le déclencheur dans la base de
données en cours d’utilisation.
Le fait de détruire une table a pour conséquence d’effacer aussi tous les déclencheurs qui lui
sont associés.
Le fait de détruire une base supprime toutes les tables. Par conséquent, les déclencheurs passent ainsi tous « à la casserole ».
SQL dynamique
MySQL parle de server-side prepared statements (états préparés) pour évoquer le fait de
pouvoir programmer en SQL dynamique. En plus des directives SQL (LMD, LID), il est
possible de construire automatiquement certaines instructions SQL du LDD.
