CREATE TRIGGERtrigger_name
trigger_time
trigger_event
ONtbl_name
FOR EACH ROWtrigger_stmt
Un déclencheur est un objet de base de données associé à une table, qui s'active lorsqu'un événement particulier survient.
Le déclencheur est associé à la table appelée
tbl_name
.
tbl_name
doit faire référence à une
table permanente. Vous ne pouvez pas associer un déclencheur avec
une table TEMPORARY
ou une vue.
trigger_time
est le moment d'action du
déclencheur. Il peut être BEFORE
(avant) ou
AFTER
(après), pour indiquer que le
délencheur s'active avant ou après la commande qui le
déclenche.
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.
Il ne peut pas y avoir deux déclencheurs pour une même table
avec les mêmes configurations de moment et de commande. Par
exemple, vous ne pouvez pas avor deux déclencheurs
BEFORE UPDATE
pour la même table. Mais vous
pouvez avoir un déclencheur BEFORE UPDATE
et
un déclencheur BEFORE INSERT
, ou un
déclencheur BEFORE UPDATE
et un déclencheur
AFTER UPDATE
.
trigger_stmt
est la commande a
exécuter lorsque le déclencheur s'active. Si vous voulez
utiliser plusieurs commandes, utilisez les agrégateurs
BEGIN ... END
. Cela vous permet aussi
d'utiliser les mêmes codes que ceux utilisés dans des
procédures stockées. See Section 19.2.7, « La commande composée BEGIN ... END
».
Note : actuellement, les déclencheurs ont les mêmes limitations que les procédures stockées : ils ne peuvent pas contenir de références directes aux tables via leur nom. Cette limitation sera levée dès que possible.
Cependant, dans la commande d'activation d'un déclencheur, vous
pouvez faire référence aux colonnes dan la table associée au
déclencheur en utilisant les mots OLD
et
NEW
.
OLD.
faire
référence à une colonne d'une ligne existante avant sa
modification ou son effacement.
col_name
NEW.
faire
référence à une colonne d'une ligne après insertion ou
modification.
col_name
L'utilisation de SET
NEW.
requiert le droit de
col_name
=
value
UPDATE
sur la colonne. L'utilisation de
SET
requiert le
droit de value
=
NEW.col_name
SELECT
sur la colonne.
La commande CREATE TRIGGER
requiert le droit de
SUPER
. Elle a été ajoutée en MySQL 5.0.2.
This is a translation of the MySQL Reference Manual that can be found at dev.mysql.com. The original Reference Manual is in English, and this translation is not necessarily as up to date as the English version.