Lignes -DR dans un Bloc Base de Données

Dans l'onglet Lignes -DR, vous décrivez les objets SQL qui composent la base de données. Une section Définition de la ligne -DR permet d'indiquer le type de l'objet, son nom externe, le code du Segment qui le représente, la table référencée (réservé aux lignes de type J), le type de clé supporté par le Segment et le type de mouvement généré.

La colonne Commentaires n'est affichée que dans le tableau de l'onglet. Elle ne correspond pas à une zone de la section de définition de la ligne d'appel. Elle affiche un astérisque sur les lignes d'appel comportant des lignes -G. Ces lignes -G de second niveau ont été indiquées avec le bouton Lignes -G de la section de définition de la ligne d'appel. Si vous placez le curseur sur cet astérisque, les lignes -G de la ligne d'appel s'affichent dans une infobulle. Si vous cliquez sur le bouton associé à l'astérisque, les lignes -G s'affichent dans leur éditeur tabulaire et vous pouvez les mettre à jour. Vous pouvez aussi afficher et mettre à jour les lignes -G avec le choix Editer les commentaires du menu contextuel de la ligne d'appel.

Définition d'une ligne -DR

La section Définition de la ligne -DR s'affiche lorsqu'une ligne de description est créée ou sélectionnée dans la liste des Lignes -DR.
Remarque : Vous pouvez compléter les champs qui composent une ligne -DR au niveau de la section Définition de la ligne ou bien directement dans le tableau.
Type de record SQL
Cette zone vous permet de saisir le type de l'objet SQL. Le contenu de la liste est conditionné par le type de Bloc sélectionné dans la Définition du Bloc de Base de Données.
Certains objets SQL ne sont pas pris en compte pour des types de Blocs donnés :
  • L'objet Espace n'est pas pris en compte dans SQL SERVER, NONSTOP SQL, DBD2/D2, DB2/600, INTEREL RDBC, INTEREL RFM, SYBASE. Pour ALLBASE/SQL. La notion d'Espace a été assimilée à la notion de DBEfileset.
  • L'objet Alter Table n'est pas pris en compte dans un Bloc de type INTEREL RFM, seul l'ajout de colonne est possible.
  • L'objet Primary Key n'est pas pris en compte dans NONSTOP SQL, ORACLE (versions antérieures à la V6), INTEREL RDBC, INTEREL RFM.
D'autres objets SQL sont exclusivement pris en compte dans ORACLE V7, SYBASE et SQL SERVER :
  • Package : package de fonction et de procédures,
  • Fonction,
  • Procédure,
  • Trigger.

Les objets appartiennent à l'espace qui les précède. Un Alter Table doit être précédé de la ligne appelant la Table qu'il modifie. Un Index doit être précédé de la ligne appelant la Table à laquelle il se rapporte. De même, une Primary key ou Foreign key doit être précédée d'une ligne Table portant le même code Table. Il n'est pas possible de créer un Index sur une Vue; l'ordre CREATE INDEX généré sera rejeté lors de la mise à jour du catalogue. Pour les Blocs de type RDMS et ALLBASE/SQL, la Primary Key n'est pas générée par une ligne dont le type d'objet est Index; sa génération est incluse dans celle de la Table qui le précède (ligne T). Le type d'une ligne Index, Primary key ou Foreign key ne peut être modifié. Il est nécessaire d'annuler la ligne puis de la recréer avec un autre type. De même, le code Table indiqué sur une ligne Index, Primary key ou Alter ne peut être modifié.

Tableau 1. Liste des objets SQL
Valeurs Description
P : Package Espace Table (sauf pour INTEREL RDBC, INTEREL RFM, NONSTOP SQL, SYBASE et SQL SERVER)
T : Table Table
V : Vue Vue
I : Index Index
A : Alter table Alter Table : Mise à jour colonnes
K : Primary key RDMS : prise en compte lors de la génération de la table qui la précède.

DB2, DATACOM/DB, SQL/DS, ORACLE V6 V7, DB2/2, DB2/6000, SYBASE et SQL SERVER : prise en compte lors de la génération par un ordre Alter table.

J : Foreign key DB2, DATACOM/DB, SQL/DS, ORACLE V6 et V7, SYBASE et SQL SERVER : prise en compte lors de la génération par un ordre Alter table
C : Package Package (uniquement ORACLE V7 )
E : Fonction Fonction (uniquement ORACLE V7)
Q : Procédure Procédure (uniquement ORACLE V7, SYBASE, SQL SERVER)
R : Trigger ORACLE V7, SYBASE et SQL SERVER: Trigger
Nom externe ou Nom Contrainte
Saisissez dans cette zone le nom manipulé par l'utilisateur. Il est obligatoire pour un Espace Table. Par contre il est interdit pour une Primary Key dans les Blocs de type DB2, DB2/2, DB2/6000 or DATACOM/DB). Pour les autres types, le nom externe peut être défini à plusieurs niveaux (type P). A la génération, le nom externe est généré par priorité dans l'ordre suivant :
  • Le nom indiqué à ce niveau,
  • Ou bien, le nom indiqué dans le Code Structure du Segment définissant l'objet concerné qui est pris en compte,
  • Ou encore, le code du Segment définissant l'objet concerné qui est pris en compte en dernier lieu.

Pour une Foreign key, cette zone correspond au nom de la contrainte (8 caractères maximum). Cette zone doit être complétée par le code de la Table référencée.

Mode de préfixation :
  • La présence d'un point dans le nom externe d'une Table ou Vue conditionnera le mode de préfixation pour DB2, SQL/DS, DB2/2 et DB2/6000 :
    • Si le nom est de la forme PREFIXE.NOM, ce nom sera considéré tel quel par Pacbase et le SGBD, c'est à dire explicitement préfixé par vous.
    • Si le nom ne contient ni point ni préfixe, il sera généré avec un préfixe égal à votre code utilisateur (8 positions). Il sera considéré tel quel par le SGBD, c'est-à-dire explicitement préfixé par Pacbase.
    • Si le nom est de la forme .NOM, il sera généré sans le point (NOM), de façon à ce que la préfixation soit assurée par le SGBD.
Table référencée
Cette information n’est significative que pour une ligne de type J (Foreign key). Elle contient le code Segment de la Table référencée, c'est-à-dire, le code Segment de ligne Table qui précède la ligne Foreign key. Pour renseigner ou modifier le contenu de cette zone, cliquez sur le bouton Modifier. Une boîte de dialogue s’ouvre et vous propose une liste des tables référencées dans le Bloc Base de Données courant. Sélectionnez une Table parmi celles qui vous sont proposées. Vous pouvez supprimer l’information en cliquant sur le bouton Supprimer.
Code Table ou Vue
Vous devez sélectionner dans cette zone le code du Segment représentant l'ensemble des colonnes d'une Table, d'une Alter Table ou d'une Vue. Pour un Index, une Primary ou Foreign key, vous devez sélectionner le Segment qui supportera la clé. Sur un objet de type Espace, cette zone ne doit pas être renseignée. Pour renseigner ou modifier le contenu de cette zone, cliquez sur Modifier. Dans la boîte de dialogue qui s'ouvre, sélectionnez un Segment dans la liste. Si la liste est volumineuse, vous pouvez la réduire en saisissant une chaîne de caractères qui sert de filtre (le filtre se fait sur le code ou sur le libellé de l'instance).
Avertissement : Seuls les Blocs de type DB2 ou ORACLE peuvent appeler des Segments ayant des Large Objects dans leur composition. Les LOBs sont incompatibles avec tout autre type de Bloc.
Lorsque cette sélection est effectuée, une icone précède le code du Segment, elle indique si l'instance représente un Segment mono-structure ou non.

Vous pouvez ouvrir l'éditeur du Segment sélectionné à partir de cette zone, en double-cliquant sur le code du Segment pour connaître, par exemple, sa composition.

Type de clé
Entrez dans cette zone le type de clé à générer.
Tableau 2. Valeurs possibles pour le type de clé
Options Description
U : UNIQUE Sur une ligne de type I : génère l'ordre UNIQUE.
De 0: Rubrique du sous-schéma 10 à 9 : Rubrique du sous-schéma 9 Sur une ligne de type V : Vue constituée de la sélection des Rubriques de ce sous-schéma dans le Segment. La valeur 0 correspond au sous-schéma 10.
Toutes : Toutes Rubriques Toutes les Rubriques du Segment sont incluses dans la Vue.
R : restrict

C : Cascade

S : set null

Sur une ligne de type J : Restrict (valeur par défaut pour les bases de type DB2 uniquement)

Cascade (DB2, SQL/DS, DB2/2, DB2/6000 et ORACLE V7 uniquement)

S : Set null (DB2, SQL/DS, DB2/2 et DB2/6000 uniquement)

BLANC : package standard
BODY : package BODY
Sur une ligne de type C (ORACLE V7) : indique le type de package : package BODY ou package normal.
A: after
B: before
Sur une ligne de type R : indique le déclenchement du trigger ou de la rule : Après (After), Avant (Before).
Type de mouvement généré
Cette zone permet de générer les ordres CREATE, ALTER et DROP.
Tableau 3. Valeurs possibles pour le type de mouvement généré
Options Description
C : Création (CREATE) Création : Valeur attribuée par défaut à la création de la ligne; génère un ordre CREATE. Seule valeur possible pour un Alter Table (ligne de type A).
M : Modification (ALTER) Modification (sauf pour SQL/400 et INGRES SQL) : Ce choix est possible sur les lignes de type Table uniquement, et pour tous les types de bases sauf SQL/400 et INGRES SQL. Le choix Modification génère un ordre ALTER.
D : Annulation (DROP) Annulation : Génère un ordre DROP. Pour un type de ligne J (Foreign key) et K (Primary Key), génère un DROP PRIMARY KEY et un DROP FOREIGN KEY dans un ordre ALTER TABLE.
N : pas de génération Pas de génération par la procédure GPRT en option C2.
Lignes -G
Ce bouton vous permet d’accéder à l’assistant de création des Lignes -G associées à la ligne de description. Vous pouvez saisir des éléments de génération sur des lignes -GG associées à la ligne de description sélectionnée. Vous pouvez également ajouter des commentaires sur des lignes -GC associées à la ligne de description.

Définition de la ligne -DRXXXK

Les lignes -K affichent les Rubriques composant le Segment utilisé comme clé de la Table (ou Index), ou Alter Table. Dans la section Cconfiguration des clés, vous sélectionnez les colonnes qui composent la clé de la Table ou un Alter Table et vous spécifiez l'ordre SQL à prendre en compte pour la génération.
Ordre ou type d'action
Vous indiquez ici l'ordre SQL devant être pris en compte pour la génération du Bloc. Les choix proposés dans la liste déroulante de cette zone sont spécifiques aux Index et Alter Table seulement.
Les choix communs pour les Index et Alter Table sont les suivants :
Tableau 4. Ordre ou type d'action commun à un Index et un Alter Table
Options Description
Pas d'ordre ou ajout d'une colonne (ADD) Pas de génération d'ordre de tri (valeur par défaut)
A : Ordre ascendant ou annulation d'une colonne (DROP) La colonne est triée en ordre ascendant.
D : Ordre descendant ou annulation d'une colonne (DROP) La colonne est triée en ordre descendant.
Tableau 5. Ordre ou type d'action pour un Alter Table uniquement
Options Description
M : Modification d'une colonne (MODIFY) La colonne peut être modifiée.
Pour une Rubrique appartenant à un Index, vous pourrez sélectionner un ordre de tri ascendant ou descendant. Il est également possible de choisir l'ordre de tri par défaut. Ainsi, aucun ordre de tri ne sera précisé dans le DLL et c'est l'ordre de tri par défaut du SGBD qui sera utilisé. Pour une Rubrique appartenant à une Alter Table, comme vous pouvez le voir dans les deux tableaux, vous pouvez choisir entre l'ajout, l'annulation ou la modification d'une colonne. Il s'agit ici d'indiquer le type de modification sur la colonne représentée par la Rubrique en question : ORDRE ADD pour l'ajout d'une colonne, ORDRE MODIFY pour la modification d'une colonne, ou ORDRE DROP pour l'annulation d'une colonne.
Ces ordres seront pris en compte à la génération du Bloc. Aucun ordre SQL n'est à indiquer pour une Primary ou Foreign key.
Rubrique
Dans cette section, vous pouvez sélectionner les Rubriques qui composeront la Clé (ou Index) de la Table, ou les colonnes d'un Alter Table. Vous devez pour cela cliquer sur Modifier. Une boîte de dialogue s'ouvre et affiche la liste des Rubriques appelées dans le Segment. Cette liste peut contenir des Rubriques qui n'ont pas été définies parce qu'elles ont été créées localement, sous l'onglet Lignes -CE de l'éditeur de Segments. Elles sont identifiées comme des Descriptions de Rubriques.

Vos commentaires