Changeset 990

Show
Ignore:
Timestamp:
04/15/08 11:04:14 (9 months ago)
Author:
sas
Message:

Relu. Impersonnalisé.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • traduc/trunk/postgresql/contrib-spi.xml

    r988 r990  
    1515 <para> 
    1616  Le module <filename>contrib/spi</filename> fournit plusieurs exemples 
    17   fonctionnels d'utilisation de SPI et des triggers. Bien que ces fonctions aient une 
     17  fonctionnels d'utilisation de SPI et des déclencheurs. Bien que ces fonctions aient une 
    1818  certaine valeur en soi, elles sont encore plus utiles en tant qu'exemples 
    1919  à modifier pour atteindre ses propres buts. Les fonctions sont suffisamment 
    20   généralistes pour être utilisées avec toute table mais la création d'un 
    21   trigger impose que les noms des tables et des champs soient précisés 
     20  généralistes pour être utilisées avec une table quelconque, mais la création d'un 
     21  déclencheur impose que les noms des tables et des champs soient précisés 
    2222  (comme décrit ci-dessous). 
    2323 </para> 
     
    3737  <para> 
    3838   <function>check_primary_key()</function> vérifie la table de référence. 
    39    Pour l'utiliser, créez un trigger <literal>BEFORE INSERT OR UPDATE</literal> 
    40    en utilisant cette fonction sur une table référençant une autre table. 
    41    Spécifiez les arguments du trigger&nbsp;: le nom de la colonne d
    42    référence de la table qui forme la clé étrangère, le nom de la table 
    43    référencée et le nom de la colonne pour la table référencée qui forme la 
     39   Pour l'utiliser, on crée un déclencheur <literal>BEFORE INSERT OR UPDATE</literal> 
     40   qui utilise cette fonction sur une table référençant une autre table. 
     41   En arguments du déclencheur, on trouve&nbsp;: le nom de la colonn
     42   de la table référençant qui forme la clé étrangère, le nom de la table 
     43   référencée et le nom de la colonne de la table référencée qui forme la 
    4444   clé primaire/unique. Il peut y avoir plusieurs colonnes. Pour gérer 
    45    plusieurs clés étrangères, créez un trigger pour chaque référence. 
     45   plusieurs clés étrangères, on crée un déclencheur pour chaque référence. 
    4646  </para> 
    4747 
    4848  <para> 
    4949   <function>check_foreign_key()</function> vérifie la table référencée. 
    50    Pour l'utiliser, créez un trigger <literal>BEFORE DELETE OR UPDATE</literal> 
    51    en utilisant cette fonction sur une table référencée par d'autres tables. 
    52    Spécifiez les arguments du trigger&nbsp;: nombre de tables référantes pour 
    53    lesquelles la fonction va réaliser la vérification, l'action si une clé 
     50   Pour l'utiliser, on crée un déclencheur <literal>BEFORE DELETE OR UPDATE</literal> 
     51   qui utilise cette fonction sur une table référencée par d'autres tables. 
     52   En arguments du déclencheur, on trouve&nbsp;: le nombre de tables référençant pour 
     53   lesquelles la fonction réalise la vérification, l'action à exécuter si une clé 
    5454   de référence est trouvée (<literal>cascade</literal> &mdash; pour supprimer 
    55    une ligne référante, <literal>restrict</literal> &mdash; pour annuler la 
    56    transaction si des clés référantes existent, <literal>setnull</literal> 
    57    &mdash; pour initialiser les champs des clés référantes à NULL), les noms 
    58    des colonnes de la table contenant le trigger, colonnes qui forment une 
    59    clé primaire/unique, puis le nom de la table référante et les noms des 
    60    colonnes (répété pour toutes les tables référantes le nombre de fois 
    61    spécifié par le premier argument). Notez que les colonnes de clé 
    62    primaire/unique devraient être marquées NOT NULL et devraient avoir un 
    63    index unique
     55   une ligne qui référence, <literal>restrict</literal> &mdash; pour annuler la 
     56   transaction si des clés de référence existent, <literal>setnull</literal> 
     57   &mdash; pour initialiser les champs des clés référençant à NULL), les noms 
     58   des colonnes de la table surveillées par le déclencheur, colonnes qui 
     59   forment la clé primaire/unique, puis le nom de la table référençant et les noms des 
     60   colonnes (répétés pour autant de tables référençant que cela est précisé par 
     61   le premier argument). Les colonnes de clé 
     62   primaire/unique doivent être marquées NOT NULL et posséder un index 
     63   d'unicité
    6464  </para> 
    6565 
     
    7474 
    7575  <para> 
    76    Auparavant, <productname>PostgreSQL</productname> avait une fonctionnalité 
     76   Dans le passé, <productname>PostgreSQL</productname> disposait d'une fonctionnalité 
    7777   de voyage dans le temps, permettant de conserver l'heure d'insertion et 
    78    de suppression pour chaque ligne. Ce comportement peut être émulé en 
    79    utilisant ces fonctions. Pour les utiliser, vous devez ajouter deux champs 
     78   de suppression de chaque ligne. Ce comportement peut être émulé en 
     79   utilisant ces fonctions. Pour les utiliser, il faut ajouter deux champs 
    8080   de type <type>abstime</type> à la table pour stocker le moment où une 
    8181   ligne a été insérée (start_date) et le moment où elle a été 
     
    9191</programlisting> 
    9292 
    93    Les colonnes peuvent être nommées comme vous le voulez, mais dans ce 
    94    chapitre, nous les appelerons start_date et stop_date. 
    95   </para> 
    96  
    97   <para> 
    98    Quand une nouvelle ligne est insérée, start_date doit normalement 
    99    être initialisée avec l'heure actuelle et stop_date doit valoir 
    100    <literal>infinity</literal>. Le trigger substituera automatiquement ces 
    101    valeurs si la donnée insérée contient des NULL dans ces colonnes. 
    102    Généralement, insérer des données explicites non NULL dans ces colonnes 
    103    ne sera fait qu'au chargement de données sauvegardées. 
    104   </para> 
    105  
    106   <para> 
    107    Les lignes avec stop_date égales à <literal>infinity</literal> sont des 
     93   Le nom des colonnes n'a aucune importance, mais dans ce 
     94   chapitre, elles sont nommées start_date et stop_date. 
     95  </para> 
     96 
     97  <para> 
     98   À l'insertion d'une nouvelle ligne, start_date doit normalement 
     99   être initialisée à l'heure courante et stop_date à 
     100   <literal>infinity</literal>. Le déclencheur substitue automatiquement ces 
     101   valeurs si les données insérées sont NULL pour ces colonnes. 
     102   L'insertion de données explicitement non-NULL dans ces colonnes n'intervient 
     103   qu'au rechargement de données sauvegardées. 
     104  </para> 
     105 
     106  <para> 
     107   Les lignes pour lesquelles stop_date vaut <literal>infinity</literal> sont des 
    108108   lignes <quote>actuellement valides</quote>, et peuvent être modifiées. 
    109    Les lignes avec un stop_date fini ne peuvent plus être modifiées &mdash; 
    110    le trigger les protège. (si vous avez besoin de les modifier, vous 
    111    pouvez désactiver le voyage dans le temps comme indiqué ci-dessous.) 
    112   </para> 
    113  
    114   <para> 
    115    Pour une ligne modifiable, en cas de mise à jour, seul stop_date sera 
    116    modifié (à l'heure actuelle) et une nouvelle ligne avec la donnée modifiée 
    117    sera insérée. Start_date dans cette nouvelle ligne sera initialisée avec 
    118    l'heure courante et stop_date vaudra <literal>infinity</literal>. 
    119   </para> 
    120  
    121   <para> 
    122    Une suppression ne supprime pas réellement la ligne mais initialis
    123    stop_date à l'heure actuelle. 
    124   </para> 
    125  
    126   <para> 
    127    Pour trouver les lignes <quote>actuellement valides</quote>, ajoutez la 
     109   Les lignes dont stop_date est fini ne peuvent plus être modifiées &mdash; 
     110   le déclencheur les protège. (Pour les modifier, il est nécessaire de 
     111   désactiver le voyage dans le temps comme indiqué ci-dessous.) 
     112  </para> 
     113 
     114  <para> 
     115   Pour une ligne modifiable, en mise à jour, seul stop_date est 
     116   modifié (positionné à l'heure courante) et une nouvelle ligne avec la donnée modifiée 
     117   est insérée. Pour cette nouvelle ligne, start_date est positionné à 
     118   l'heure courante et stop_date à <literal>infinity</literal>. 
     119  </para> 
     120 
     121  <para> 
     122   Une suppression ne supprime pas réellement la ligne mais positionn
     123   stop_date à l'heure courante. 
     124  </para> 
     125 
     126  <para> 
     127   Pour trouver les lignes <quote>actuellement valides</quote>, on ajoute la 
    128128   clause <literal>stop_date = 'infinity'</literal> dans la condition 
    129    WHERE de la requête. (Vous pouvez l'incorporer dans une vue.) De façon 
    130    similaire, vous pouvez exécuter une requête sur les lignes valides à 
    131    tout moment dans le passé avec les conditions adéquates sur 
     129   WHERE de la requête. (Cela peut se faire au travers d'une vue.) De façon 
     130   similaire, une requête peut être exécutée sur les lignes valides à 
     131   un moment du passé si des conditions adéquates sont posées sur 
    132132   start_date et stop_date. 
    133133  </para> 
    134134 
    135135  <para> 
    136    <function>timetravel()</function> est la fonction trigger généraliste qui 
    137    supporte ce comportement. Créez un trigger <literal>BEFORE INSERT OR UPDATE 
    138    OR DELETE</literal> utilisant cette fonction pour chaque table pour laquelle 
    139    la fonctionnalité de voyage dans le temps est activée. Spécifiez deux 
    140    arguments pour le trigger&nbsp;: les noms réels des colonnes start_date et 
    141    stop_date. En option, vous pouvez spécifier entre un et trois arguments 
    142    supplémentaires qui doivent faire référence aux colonnes de type 
    143    <type>text</type>. Le trigger stockera le nom de l'utilisation courant 
     136   <function>timetravel()</function> est la fonction déclencheur générique 
     137   associée à ce fonctionnement. 
     138   On crée un déclencheur <literal>BEFORE INSERT OR UPDATE 
     139   OR DELETE</literal> qui utilise cette fonction pour chaque table sur laquelle 
     140   la fonctionnalité de voyage dans le temps est activée. Le déclencheur 
     141   accepte deux arguments&nbsp;: les noms réels des colonnes start_date et 
     142   stop_date. La fonction accepte jusqu'à trois arguments optionnels 
     143   qui doivent faire référence à des colonnes de type 
     144   <type>text</type>. Le déclencheur stocke le nom de l'utilisateur courant 
    144145   dans la première de ces colonnes lors d'un INSERT, dans la seconde lors 
    145    d'un UPDATE et dans la troisième pour un DELETE. 
    146   </para> 
    147  
    148   <para> 
    149    <function>set_timetravel()</function> vous permet d'activer et de 
    150    désactiver la fonctionnalité du voyage dans le temps pour une table. 
    151    <literal>set_timetravel('ma_table', 1)</literal> l'activera pour la table 
     146   d'un UPDATE et dans la troisième lors un DELETE. 
     147  </para> 
     148 
     149  <para> 
     150   <function>set_timetravel()</function> permet d'activer et de 
     151   désactiver la fonctionnalité de voyage dans le temps pour une table. 
     152   <literal>set_timetravel('ma_table', 1)</literal> l'active pour la table 
    152153   ma_table. 
    153    <literal>set_timetravel('mytab', 0)</literal> la désactivera pour la table 
     154   <literal>set_timetravel('ma_table', 0)</literal> la désactive pour la table 
    154155   ma_table. 
    155156   Dans les deux cas, l'ancien statut est rapporté. Quand elle est 
    156    désactivée, vous pouvez modifier librement les colonnes start_date e
    157    stop_date. Notez que le statut activé/désactivé est local à la session 
    158    de la base &mdash; les nouvelles commenceront toujours avec cette 
    159    fonctionnalité activée pour toutes les tables. 
     157   désactivée, les colonnes start_date et stop_date peuvent être libremen
     158   modifiées. Le statut actif/inactif est local à la session 
     159   courante &mdash; toute session commence avec cette 
     160   fonctionnalité activée sur toutes les tables. 
    160161  </para> 
    161162 
    162163  <para> 
    163164   <function>get_timetravel()</function> renvoie l'état de la fonctionnalité 
    164    du voyage dans le temps pour une table sans la modifier. 
     165   du voyage dans le temps pour une table sans le modifier. 
    165166  </para> 
    166167 
     
    175176 
    176177  <para> 
    177    <function>autoinc()</function> est un trigger qui stocke la prochaine valeur 
    178    d'une séquence dans un champ de type integer. Ceci est en partie couvert 
    179    par la fonctionnalité interne de la colonne <quote>serial</quote>, mais 
    180    n'est pas strictement identique&nbsp;: <function>autoinc()</function> 
    181    surchargera les tentatives de substituer une valeur différente pour ce 
    182    champ lors des insertions et, en option, il peut aussi être utilisé pour 
     178   <function>autoinc()</function> est un déclencheur qui stocke la prochaine valeur 
     179   d'une séquence dans un champ de type integer. Cela recouvre quelque peu 
     180   la fonctionnalité interne de la colonne <quote>serial</quote>, mais 
     181   ce n'est pas strictement identique&nbsp;: <function>autoinc()</function> 
     182   surcharge les tentatives de substitution d'une valeur différente pour ce 
     183   champ lors des insertions et, optionnellement, peut aussi être utilisé pour 
    183184   incrémenter le champ lors des mises à jour. 
    184185  </para> 
    185186 
    186187  <para> 
    187    Pour l'utiliser, créez un trigger <literal>BEFORE INSERT</literal> (ou 
    188    en option <literal>BEFORE INSERT OR UPDATE</literal>) en utilisant cette 
    189    fonction. Spécifiez deux arguments pour le trigger&nbsp;: le nom de la 
    190    colonne de type integer à modifier, et le nom de la séquence qui fournira 
    191    les valeurs. (En fait, vous pouvez spécifier plusieurs paires de noms si 
    192    vous voulez mettre à jour plus d'une colonne.) 
    193   </para> 
    194  
    195   <para> 
    196    Il existe un exemple dans <filename>autoinc.example</filename>. 
     188   Pour l'utiliser, on crée un déclencheur <literal>BEFORE INSERT</literal> (ou 
     189   en option <literal>BEFORE INSERT OR UPDATE</literal>) qui utilise cette 
     190   fonction. Le déclencheur accepte deux arguments&nbsp;: le nom de la 
     191   colonne de type integer à modifier et le nom de la séquence qui fournit 
     192   les valeurs. (En fait, plusieurs paires de noms peuvent être indiquées pour  
     193   actualiser plusieurs colonnes.) 
     194  </para> 
     195 
     196  <para> 
     197   Un exemple est fourni dans <filename>autoinc.example</filename>. 
    197198  </para> 
    198199 
     
    204205 
    205206  <para> 
    206    <function>insert_username()</function> est un trigger qui stocke le 
    207    nom de l'utilisateur en cours dans un champ texte. Ceci est utile pour 
    208    tracer le dernier utilisateur qui a modifié une ligne particulière d'une 
     207   <function>insert_username()</function> est un déclencheur qui stocke le 
     208   nom de l'utilisateur courant dans un champ texte. C'est utile pour 
     209   savoir quel est le dernier utilisateur à avoir modifié une ligne particulière d'une 
    209210   table. 
    210211  </para> 
    211212 
    212213  <para> 
    213    Pour l'utiliser, créez un trigger <literal>BEFORE INSERT</literal> et/ou 
    214    <literal>UPDATE</literal> en utilisant cette fonction. Le seul argument 
    215    du trigger correspond au nom de la colonne texte à modifier. 
    216   </para> 
    217  
    218   <para> 
    219    Il existe un exemple dans <filename>insert_username.example</filename>. 
     214   Pour l'utiliser, on crée un déclencheur <literal>BEFORE INSERT</literal> et/ou 
     215   <literal>UPDATE</literal> qui utilise cette fonction. Le déclencheur prend 
     216   pour seul argument le nom de la colonne texte à modifier. 
     217  </para> 
     218 
     219  <para> 
     220   Un exemple est fourni dans <filename>insert_username.example</filename>. 
    220221  </para> 
    221222 
     
    227228 
    228229  <para> 
    229    <function>moddatetime()</function> est un trigger qui stocke la date et 
     230   <function>moddatetime()</function> est un déclencheur qui stocke la date et 
    230231   l'heure de la dernière modification dans un champ de type 
    231    <type>timestamp</type>. Ceci peut être utile pour savoir quand a eu lieu la 
    232    dernière modification pour une ligne particulière d'une table. 
    233   </para> 
    234  
    235   <para> 
    236    Pour l'utiliser, créez un trigger <literal>BEFORE UPDATE</literal> en 
    237    utilisant cette fonction. Le seul argument de ce trigger correspond au 
     232   <type>timestamp</type>. C'est utile pour savoir quand a eu lieu la 
     233   dernière modification sur une ligne particulière d'une table. 
     234  </para> 
     235 
     236  <para> 
     237   Pour l'utiliser, on crée un déclencheur <literal>BEFORE UPDATE</literal> qui 
     238   utilise cette fonction. Le déclencheur prend pour seul argument le 
    238239   nom de la colonne de type <type>timestamp</type> à modifier. 
    239240  </para> 
    240241 
    241242  <para> 
    242    Il existe un exemple dans <filename>moddatetime.example</filename>. 
     243   Un exemple est fourni dans <filename>moddatetime.example</filename>. 
    243244  </para> 
    244245