FirebirdSQL logo
 DOMAININDEX 

Exemples d’utilisation de tables externes

Dans notre exemple, nous allons définir une table d’enregistrement externe qui peut être utilisée dans le gestionnaire d’exception d’une procédure stockée ou d’un déclencheur.La table externe est choisie parce que les messages de toute exception traitée seront stockés dans le journal, même si la transaction dans laquelle le processus a été exécuté est annulée en raison d’une autre exception non traitée.À des fins de démonstration, notre tableau ne contient que deux colonnes : un horodatage et un message texte.La troisième colonne stocke le séparateur de ligne :

CREATE TABLE ext_log
EXTERNAL FILE 'd:\externals\log_me.txt' (
   stamp   CHAR(24),
   message CHAR(100),
   crlf    CHAR(2) -- Pour Windows
);

COMMIT;

Créez maintenant un déclencheur pour enregistrer automatiquement l’horodatage et le séparateur de ligne chaque fois qu’un message est écrit dans la table :

SET TERM ^;
CREATE TRIGGER bi_ext_log FOR ext_log
ACTIVE BEFORE INSERT
AS
BEGIN
  IF (NEW.stamp IS NULL) THEN
    NEW.stamp = CAST (CURRENT_TIMESTAMP AS CHAR(24));
  NEW.crlf = ASCII_CHAR(13) || ASCII_CHAR(10);
END ^
COMMIT ^
SET TERM ;^

Insertion de certaines entrées (cela peut être fait dans un gestionnaire d’exception)

INSERT INTO ext_log (message)
VALUES('Shall I compare thee to a summer''s day?');
INSERT INTO ext_log (message)
VALUES('Thou art more lovely and more temperate');

Contenu du fichier externe:

2015-10-07 15:19:03.4110Shall I compare thee to a summer's day?
2015-10-07 15:19:58.7600Thou art more lovely and more temperate

Restriction NOT NULL

Par défaut, la colonne peut accepter la valeur NULL.

La clause facultative NOT NULL indique que la colonne ne peut pas être affectée d’une valeur NULL.