IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

Trigger créer, insert error : "l'extraction" ..


Sujet :

Langage SQL

  1. #1
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 051
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 051
    Points : 1 638
    Points
    1 638
    Par défaut Trigger créer, insert error : "l'extraction" ..
    Bonjour, voilà je suis assez débutant en SQL.
    J'ai créer une BD qui comportent donc plusieurs tables, j'ai voulu créer un trigger :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    CREATE OR REPLACE TRIGGER PoidsMax
    BEFORE INSERT ON EstLivre
    FOR EACH ROW
    DECLARE 
    b integer ;
    d integer ;
    e integer ;
    TropLourd EXCEPTION ;
     
    BEGIN
     
    SELECT Colis.Poids INTO b FROM Colis WHERE Colis.CodeColis=:NEW.CECodeColis;
     
    SELECT :NEW.Quantite INTO d FROM EstLivre;
     
    SELECT TypeCamion.PoidsMax INTO e FROM TypeCamion,Camion WHERE :NEW.CENoImm=Camion.NoImm AND Camion.CEModele=TypeCamion.Modele 
           AND Camion.CEMarque=TypeCamion.Marque;
     
    IF e<(b*d) THEN RAISE TropLourd ;
    END IF ;
     
    EXCEPTION
       WHEN TropLourd then RAISE_APPLICATION_ERROR(-20501,'Charge trop lourde pour le camion');
    END ;
    /
    En gros dans chaque select je selectionne un attribut d'une relation différente pour les comparer, cependant le trigger se créer sans erreurs.
    Je m'arrange pour chaque table à mettre des valeurs incensés afin de le faire déclencher seulement à chaque insertion voilà l'erreur :

    ORA-01422 L'extraction ramene plus que le nombre de ligne demandé
    ORA-06512 o "SYSTEM.POIDSMAX3
    ORA erreur lors de l'exectuin du déclencheur ..
    voilà qui signifie cette erreur svp ? Car j'ai la même sur un autre trigger

    Je travail sous oracle

    merciiii

  2. #2
    Membre émérite
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    1 874
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 874
    Points : 2 890
    Points
    2 890
    Par défaut
    Quand on fait un SELECT colonne INTO variable FROM..., le SELECT ne doit renvoyer qu'une seule ligne sinon l'interpréteur plsql ne sait pas quoi faire du résultat.
    Or dans le code montré il y a cette ligne:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT :NEW.Quantite INTO d FROM EstLivre;
    qui parait bien suspecte par rapport à cette contrainte.

Discussions similaires

  1. Réponses: 16
    Dernier message: 28/06/2007, 18h10
  2. Select et insert avec des caracteres speciaux (quote ')
    Par Paco75 dans le forum Requêtes
    Réponses: 2
    Dernier message: 25/10/2006, 15h59
  3. Créer un trigger "before insert" avec SQL Server
    Par bubi dans le forum Développement
    Réponses: 2
    Dernier message: 14/11/2005, 11h12
  4. Réponses: 6
    Dernier message: 21/10/2005, 19h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo