Triggers, etc

Nonno
Invité n'ayant pas de compte PHPfrance

22 mai 2007, 14:41

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.

Modérateur PHPfrance
Modérateur PHPfrance | 6373 Messages

22 mai 2007, 17:02

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.

Mammouth du PHP | 19672 Messages

22 mai 2007, 18:27

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

Avatar du membre
Administrateur PHPfrance
Administrateur PHPfrance | 13231 Messages

22 mai 2007, 18:35

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
Connaître son ignorance est la meilleure part de la connaissance
Pour un code lisible : n'hésitez pas à sauter des lignes et indenter

twitter - site perso - Github - Zend Certified Engineer