FirebirdSQL logo
 DOMAININDEX 
Séparateur de ligne

En général, les fichiers externes sont plus pratiques si les lignes sont séparées par un délimiteur, comme une séquence de "nouvelle ligne" qui peut être reconnue par une application sur la plate-forme prévue.Pour Windows, il s’agit d’une séquence de deux octets "CRLF", d’un retour chariot (code ASCII 13) et d’un saut de ligne (code ASCII 10).Pour POSIX — LF est généralement autonome, dans certaines applications macOS X il peut s’agir de LFCR.Il existe plusieurs façons de remplir automatiquement la colonne du séparateur.Dans notre exemple, nous utilisons le trigger BEFORE INSERT et la fonction intégrée ASCII_CHAR.

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