Page 1 sur 1

Triggers, etc

Posté : 22 mai 2007, 14:41
par Nonno
Nous gérons des listes chaînées à l aide des deux tables MAILLON et LISTE_CHAINEE. La table MAILLON contient tous les maillons de toutes les listes chaînées. Elle est définie comme suit

Code : Tout sélectionner

CREATE TABLE MAILLON ( ID NUMBER PRIMARY KEY, VALEUR NUMBER, SUIVANT NUMBER REFERENCES MAILLON(ID) );
La table LISTECHAINEE contient les ID des débuts de chaque liste chaînée, elle est définie comme suit :

Code : Tout sélectionner

CREATE TABLE LISTECHAINEE ( DEBUT PRIMARY KEY, FOREIGN KEY (DEBUT) REFERENCES MAILLON (ID) );
Le sous-programme suivant initialise la table LISTECHAINEE est recherchant tous les début de liste dans la table MAILLON.

Code : Tout sélectionner

CREATE OR REPLACE PROCEDURE INITLISTECHAINEE IS CURSOR maillons IS SELECT * FROM MAILLON; m maillons%rowtype; nbPredecesseurs NUMBER; BEGIN FOR m IN maillons LOOP SELECT count(*) INTO nbPredecesseurs FROM MAILLON WHERE suivant = m.ID; IF nbPredecesseurs = 0 THEN INSERT INTO LISTECHAINEE VALUES (m.ID); END IF; END LOOP; END;
  1. Ce sous-programme part du principe que si un élément n a pas de prédécesseur, il est un début de liste chaînée.
  2. Il est possible, sans désactiver de contrainte déclarative, de créer un circuit dans maillon.
  3. Si la table LISTECHAINEE est vide avant l exécution de INITLISTECHAINEE, il est possible que l exception DUP_VAL_ON_INDEX soit levée pendant l exécution de INITLISTECHAINEE.
  4. Il n est pas possible, sans désactiver de contrainte déclarative, de placer dans MAILLON des données telles qu un maillon ait plusieurs prédécesseurs.
  5. INITLISTECHAINEE peut être appelé plusieurs fois de suite sans que cela lève d exception.

Posté : 22 mai 2007, 17:02
par ouckileou
Ni "bonjour",ni "svp", ni "merci", ni même de question ! Et tu te permets de mettre "Urgent" en titre !!

Je ne modère même pas, je pense que tu n'auras aucune réponse. Les membres de ce forum ne sont pas des domestiques.

Posté : 22 mai 2007, 18:27
par Cyrano
Je ne modère même pas...
Tu es bien bon, je vais être moins tolérant.
--------------------------------------------------------------------------
Modération :
Nonno,
  1. le multipostage est interdit sur le forum.
  2. Tes délais ne nous intéressent pas.
    Nous savons que tu es en difficulté puisque tu demandes de l'aide,
    mais nous sommes tous bénévoles et répondons selon nos disponibilités.
  3. afin d'améliorer la lisibilité de ton message,
    pense à utiliser les balises [code] ou [php] (selon le langage utilisé).

    Elles sont disponibles au-dessus de la zone de saisie de ton message
    lorsque tu postes un nouveau message.

    Des indications sont disponibles sur la manière de mettre en forme vos messages dans la FAQ
Merci de prendre le temps de lire les règlements.
[/color]

Par indulgence malgré tout, je ne verrouille pas le sujet, mais la tentation était grande, veille à respecter les règles, elles ne sont pas insurmontables et tout le monde ici y est soumis, incluant les animateurs de ces forums.

Posté : 22 mai 2007, 18:35
par zeus
Puisque Nonno a posté en tant qu'invité, je me suis permis de modifier son message à sa place. ;)

Ensuite, en plus de la question que demande Ouckileou, j'aimerais que tu nous donnes le SGBD et les points de frictions :-k