FirebirdSQL logo

Un déclencheur est un type spécial de procédure stockée qui n’est pas appelé directement, mais dont l’exécution est déclenchée par l’occurrence de l’un des événements associés à une table ou à une vue spécifique, ou par l’occurrence de l’un des événements de la base de données.

Un déclencheur est un type spécial de procédure stockée qui n’est pas appelé directement mais qui est exécuté lorsqu’un événement spécifique se produit dans la table ou la vue associée. Un déclencheur DML est spécifique à une et une seule relation (table ou vue) et à une phase dans le temps de l’événement (BEFORE ou AFTER).Il peut être configuré pour s’exécuter pour un événement spécifique (insertion, mise à jour, suppression) ou pour une combinaison de deux ou trois de ces événements.

En dehors des déclencheurs DML, il existe aussi des* Les déclencheurs pour les événements de la base de données qui se produisent au début ou à la fin d’une connexion ou d’une transaction.* Les déclencheurs DDL, qui se produisent avant ou après l’exécution d’un ou plusieurs types d’instructions DDL.

CREATE TRIGGER

Utilisé pour:

Création d’un nouveau trigger.

Disponible en

DSQL, ESQL

Syntaxe
CREATE TRIGGER trigname {
    <relation_trigger_legacy>
  | <relation_trigger_sql2003>
  | <database_trigger>
  | <ddl_trigger> }
<routine body>

<relation_trigger_legacy> ::=
  FOR {tablename | viewname}
  [ACTIVE | INACTIVE]
  {BEFORE | AFTER} <mutation_list>
  [POSITION number]

<relation_trigger_sql2003> ::=
  [ACTIVE | INACTIVE]
  {BEFORE | AFTER} <mutation_list>
  ON {tablename | viewname}
  [POSITION number]

<database_trigger> ::=
  [ACTIVE | INACTIVE]
  ON db_event
  [POSITION number]

<ddl_trigger> ::=
  [ACTIVE | INACTIVE]
  {BEFORE | AFTER} <ddl_events>
  [POSITION number]

<mutation_list> ::= <mutation> [OR <mutation> [OR <mutation>]]

<mutation> ::=  INSERT | UPDATE | DELETE

<db_event> ::=
    CONNECT | DISCONNECT
  | TRANSACTION {START | COMMIT | ROLLBACK}


<ddl_events> ::= {
    ANY DDL STATEMENT
  | <ddl_event_item> [{OR <ddl_event_item>} ...]
}

<ddl_event_item> ::=
    {CREATE | ALTER | DROP} TABLE
  | {CREATE | ALTER | DROP} PROCEDURE
  | {CREATE | ALTER | DROP} FUNCTION
  | {CREATE | ALTER | DROP} TRIGGER
  | {CREATE | ALTER | DROP} EXCEPTION
  | {CREATE | ALTER | DROP} VIEW
  | {CREATE | ALTER | DROP} DOMAIN
  | {CREATE | ALTER | DROP} ROLE
  | {CREATE | ALTER | DROP} SEQUENCE
  | {CREATE | ALTER | DROP} USER
  | {CREATE | ALTER | DROP} INDEX
  | {CREATE | DROP} COLLATION
  | ALTER CHARACTER SET
  | {CREATE | ALTER | DROP} PACKAGE
  | {CREATE | DROP} PACKAGE BODY
  | {CREATE | ALTER | DROP} MAPPING

<routine-body> ::=
    <psql-routine-spec>
  | <external-routine-spec>

<psql-routine-spec> ::=
  [<rights-clause>] <psql-routine-body>


<rights-clause> ::=
  SQL SECURITY {DEFINER | INVOKER}

<psql-routine-body> ::=
  Voir Syntaxe du corps du module

<external-routine-spec> ::=
  <external-routine-reference>
  [AS <extbody>]

<external-routine-reference> ::= EXTERNAL NAME '<extname>' ENGINE <engine>

<extname> ::= '<module-name>!<routine-name>[!<misc-info>]'
Table 1. Paramètres de la commande CREATE TRIGGER
Paramètre Description

trigname

Nom du trigger.Peut contenir jusqu’à 63 caractères.

relation_trigger_legacy

Déclaration du trigger de la table (héritée).

relation_trigger_sql2003

La déclaration du trigger de la table selon la norme SQL-2003.

database_trigger

Déclaration d’un trigger de base de données.

ddl_trigger

Déclaration de déclenchement DDL.

tablename

Nom de la table

viewname

Nom de la vue

mutation_list

Liste des événements de la table.

mutation

Un des événements sur la table.

db_event

Un événement de connexion ou de transaction.

ddl_events

Liste des événements de changement de métadonnées.

ddl_event_item

Un des événements de la modification des métadonnées.

number

L’ordre dans lequel le trigger est actionné.De 0 à 32767.

extbody

Le corps du déclencheur externe.La chaîne littérale peut être utilisée par l’UDR à diverses fins.

module-name

Nom du module externe.

routine-name

Le nom du point d’entrée dans le module.

misc-info

Informations diverses utilisées par le trigger externe

L’instruction CREATE TRIGGER crée un nouveau déclencheur.Un déclencheur peut être créé pour le ou les événements d’une relation (table ou vue), pour un ou des événements de changement de métadonnées, ou pour l’un des événements de la base de données.

L’opérateur CREATE TRIGGER, comme ses parents ALTER TRIGGER, CREATE OR ALTER TRIGGER et RECREATE TRIGGER sont des opérateurs composés contenant un en-tête et un corps.

L’en-tête spécifie le nom du déclencheur et contient le nom de la relation (pour les déclencheurs de table), la phase du déclencheur, l’événement (ou les événements) du déclencheur et la position.Le nom du déclencheur doit être unique parmi les autres noms de déclencheurs.