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

Administration Oracle Discussion :

quelle instruction faut il utiliser dans le trigger jouant le rôle que distinct


Sujet :

Administration Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Par défaut quelle instruction faut il utiliser dans le trigger jouant le rôle que distinct
    Bonjour,

    j'ai besoin d'utiliser le distinct dans mon trigger mais cela ne marche pas. Ya -il autre chose qui puisse marcher. J'ai aussi essaye le unique lui aussi ne fonctionne pas.

    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
    CREATE OR REPLACE TRIGGER insert_table1
    before INSERT ON table1 FOR each row
     
    declare
    begin
     
     
              INSERT INTO attestcmp (............ )  SELECT distinct r.tab_y, r.tab_b, r.tab_s, r.tab_n, r.tab_d, s.tab_r_s, s.tab_r_n, s.tab_r_d, s.tab_r_cons, i.tab_hs_c||i.tab_hsp_c AS tar
            FROM table1 r, sadg s, sadi i
            WHERE r.ky = s.ky AND
                  r.kc = s.kc AND
                  r.kd = s.kd AND
                  r.kn = s.kn AND
                  r.ky = i.ky AND
                  r.kc = i.kc AND
                  r.kd = i.kd AND
                  r.kn = i.kn AND 
                  i.tab_hs_c||i.tab_hsp_c= '239100';

  2. #2
    McM
    McM est déconnecté
    Expert confirmé

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Billets dans le blog
    4
    Par défaut
    Un SELECT dans un trigger a le même fonctionnement qu'un SELECT sous SQLPLUS.

    PS : Ton code : i.tab_hs_c||i.tab_hsp_c= '239100'
    Attention, tout dépend de ce que tu peux avoir dans tes colonnes, mais tu peux te retrouver avec
    TAB_HS_C || TAB_HSP_C = '239100'
    '2' '39100'
    '23' '9100'
    '239' '100'
    '2391' '00'
    '23910' '0'

  3. #3
    Expert éminent
    Avatar de orafrance
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    15 967
    Détails du profil
    Informations personnelles :
    Âge : 48
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 15 967
    Par défaut
    comme il faut deviner l'erreur moi je miserai bien sur un mutating table et m'est avis qu'une recherche permettrait de répondre à la question

  4. #4
    Membre averti
    Inscrit en
    Octobre 2006
    Messages
    47
    Détails du profil
    Informations forums :
    Inscription : Octobre 2006
    Messages : 47
    Par défaut
    je sais ce qu'il ya dans mes colonnes et je sais d'ailleurs pourquoi j'ai des enregistrements multiples. Ce que je veux c'est d'uliser le distinct pour qu'il ne me renvoie qu'un seul enregistrement par insersion.

    J'ai utiliser avec le même select le distinst sous SQLPLUS ça marche mais une fois dans le trigger ça ne réagit pas.

  5. #5
    Membre Expert Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Par défaut
    Je ne sais pas si c'est ça, mais vu le trigger (BEFORE INSERT) ça veut dire que si tu as les données suivantes à insérer dans table1 :
    Ca va donner ça :
    Insertion de a 1
    -> déclenchement du trigger, insertion de n lignes dans attestcmp
    Insertion de b 2
    -> déclenchement du trigger, insertion de n lignes dans attestcmp
    Insertion de c 2
    -> déclenchement du trigger, insertion de n lignes dans attestcmp
    ...
    Donc c'est normal que tu ais des doublons dans attestcmp. Est-ce que tu ne devrais pas filtrer la (les) ligne(s) à insérer en te basant sur la clé de ligne qui est interceptée par le trigger ?

  6. #6
    Expert confirmé
    Avatar de SheikYerbouti
    Profil pro
    Inscrit en
    Mai 2003
    Messages
    6 760
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2003
    Messages : 6 760
    Par défaut
    Comme le présume Fred,l'erreur en exécution est probablement table en mutation car vous ne pouvez pas exécuter un ordre du DML sur la même table que celle qui supporte le trigger.

  7. #7
    Membre Expert Avatar de nuke_y
    Profil pro
    Indépendant en analyse de données
    Inscrit en
    Mai 2004
    Messages
    2 076
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Indépendant en analyse de données

    Informations forums :
    Inscription : Mai 2004
    Messages : 2 076
    Par défaut
    Excusez moi mais je ne comprend pas. La table dans laquelle le trigger insère est attestcmp et celle qui possède le trigger est table1, non ?

    Ou alors un truc m'échappe...

    EDIT :
    Il ne parle pas d'erreur en exécution, il dit que "ça ne marche pas", non ?

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 25/08/2012, 15h09
  2. quelle sont les balises utilisent dans le javascript de débutant ?
    Par oussamadag dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 15/01/2010, 21h49
  3. Quelles classes faut-il utiliser?
    Par anaranjado dans le forum AWT/Swing
    Réponses: 3
    Dernier message: 31/12/2008, 11h41
  4. Que faut il utiliser pour faire des recherches dans LDAP?
    Par kabouns dans le forum API standards et tierces
    Réponses: 5
    Dernier message: 04/08/2006, 15h24
  5. Réponses: 7
    Dernier message: 12/07/2006, 10h24

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