1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85
| 5.8 DATALINK
Le type DATALINK est une référence à un fichier externe, permettant, par exemple, de stocker des images, de la vidéo, des sons et des fichiers binaires. Les fichiers ainsi référencés restent sur un disque quelconque du système informatique. Les données sont donc externes à la base, mais il est possible de maintenir une intégrité, de manière à interdire modification et suppression des fichiers autrement que par un ordre SQL de la base.
Il se déclare ainsi :
DATALINK [ <options_de_contrôle> ]
<options_de_contrôle> ::=
NO LINK CONTROL | FILE LINK CONTROL <option_de_contrôle_fichier>
<option_de_contrôle_fichier> ::=
<option_intégrité> <autorisation_lecture> <autorisation_écriture>
<option_récupération> [ <option_détachement> ]
<option_intégrité> ::=
INTEGRITY ALL
| INTEGRITY SELECTIVE
| INTEGRITY NONE
<autorisation_lecture> ::=
READ PERMISSION FS
| READ PERMISSION DB
<autorisation_écriture> ::=
WRITE PERMISSION FS
| WRITE PERMISSION BLOCKED
<option_récupération> ::=
RECOVERY NO
| RECOVERY YES
<option_détachement> ::=
ON UNLINK RESTORE
| ON UNLINK DELETE
| ON UNLINK NONE
NO LINK CONTROL signifie que les liens ne sont connus par la base que par leur nom (URI : Uniform Ressource Identifier). Dans le cas contraire, FILE LINK CONTROL, il est possible de piloter les liens par les options de la base de données décrites ci-dessous :
INTEGRITY ALL : seul un ordre SQL peut supprimer ou modifier les fichiers afférant au lien.
INTEGRITY SELECTIVE : un ordre SQL, comme le système de fichier de lOS, peut supprimer ou modifier les fichiers afférant au lien.
INTEGRITY NONE : seul le système de fichier de lOS peut supprimer ou modifier les fichiers afférant au lien.
READ PERMISSION FS : les droits en lecture sont définis par le système de fichiers.
READ PERMISSION DB : les droits en lecture sont définis par la base de données.
WRITE PERMISSION FS : les droits en écriture sont définis par le système de fichiers.
WRITE PERMISSION BLOCKED : aucun droit en écriture nest autorisé.
RECOVERY YES : sauvegarde et restauration possibles dans le cadre de la base de données.
RECOVERY NO : sauvegarde et restauration impossibles dans le cadre de la base de données.
ON UNLINK RESTORE : restaure les droits et propriétaire système originels si le lien est détaché de la base.
ON UNLINK DELETE : supprime le fichier en cas de détachement de la base.
ON UNLINK NONE : en cas de détachement de la base, le fichier nest pas supprimé et les droits restent tels quels (des droits système sont appliqués par défaut si cela est possible).
Exemple :
CREATE TABLE T_FILM_FLM
(FLM_ID INT NOT NULL PRIMARY KEY,
FLM_TITRE VARCHAR(256),
FLM_FILM DATALINK FILE LINK CONTROL
INTEGRITY ALL
READ PERMISSION DB
WRITE PERMISION BLOCKED
RECOVERY YES
ON UNLINK NONE,
FLM_ANNEE INT)
SQL:1999 fournit, en outre, des fonctions afin de piloter linsertion, la restitution, comme lextraction de certaines parties de lURI :
DLVALUE : instancie la valeur de lURI pour la colonne de type DATALINK (constructeur).
DLURLCOMPLETE : restitue la valeur de lURI contenu dans la colonne de type DATALINK.
DLURLPATH : restitue le chemin de lURI, avec son origine.
DLURLPATHONLY : restitue le chemin de lURI, sans son origine.
DLURLSCHEME : restitue le mode de flux (http ou file) de lURI.
DLURLSERVER : restitue la ressource de lURI.
Exemple :
INSERT INTO T_FILM_FLM (FLM_ID, FLM_TITRE, FLM_FILM, FLM_ANNEE)
VALUES (178, 'West Side Story',
DLVALUE('file://srvmed/films/WesSideStory.mpeg'),
1960)
insère une ligne dans la table T_FILM_FLM avec la référence au fichier vidéo du film « West Side Story ».
SELECT FLM_TITRE, FML_ANNEE, DRURLCOMPLETE(FLM_FILM) AS FLM_MPEG
FROM T_FILM_FLM
WHERE FLM_ID = 178
FLM_TITRE FML_ANNEE FLM_MPEG
----------------- ------------ ---------------------------------------
West Side Story 1960 file://srvmed/films/WesSideStory.mpeg |