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

PL/SQL Oracle Discussion :

Triggers BEFORE INSERT multiples sur la même table


Sujet :

PL/SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 39
    Par défaut Triggers BEFORE INSERT multiples sur la même table
    Bonjours,

    Je suis en train de manipuler une table où j'ai trouvé la nécessité de lancer plusieurs triggers, soit pour :
    • La génération d'une clé.
    • L'import des données communes à d'autres tables.
    • Tester les données insérées par l'utilisateur.


    Est-ce que je peux lancer plusieurs triggers BEFORE INSERT sur la même table ou non.

    Merci d'avance à tous ceux qui vont essayer de m'aider.

  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
    Essaye
    Oui tu peux, Oracle ne garanti pas l'ordre d'exécution (sauf en 10g ou 11g où tu peux créer des groupes de triggers avec un ordre)

  3. #3
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 39
    Par défaut
    C'est mon problème, car l'ordre est crucial, il faut respectivement :
    1. Exécuter le trigger qui crée la clé.
    2. Exécuter le trigger qui importe les données d'autres tables.
    3. Exécuter le trigger qui teste les données.

    Je travaille avec Oracle Database 10g Express Edition, avec l'interface APEX 4.0.

  4. #4
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Vous avez un énorme problème de modélisation / méthodologie.

    La génération de votre clef primaire va à l'encontre des règles de modélisation puisque vous ne respectez pas l'atomicité des données.
    Vous imbriquez plusieurs informations dans la même colonne, ce qui est contre-productif, et le pseudo-gain que vous pourriez constater maintenant vous le regretterez plus tard, 100% garanti.

    Une autre règle : on teste les données avant de les insérer, pas après.

  5. #5
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Avant la 11g il n'est pas possible de garantir l'ordre d'exécution des triggers.
    Evitez les triggers ils posent plus des problèmes qu'ils résoudront, sauf trace ou audit.

  6. #6
    Membre averti
    Inscrit en
    Juillet 2010
    Messages
    39
    Détails du profil
    Informations forums :
    Inscription : Juillet 2010
    Messages : 39
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Vous avez un énorme problème de modélisation / méthodologie.

    La génération de votre clef primaire va à l'encontre des règles de modélisation puisque vous ne respectez pas l'atomicité des données.
    Vous imbriquez plusieurs informations dans la même colonne, ce qui est contre-productif, et le pseudo-gain que vous pourriez constater maintenant vous le regretterez plus tard, 100% garanti.

    Une autre règle : on teste les données avant de les insérer, pas après.
    C'est vrai ce que vous venez de citer, peut-être la solution sera de fusionner les trois actions dans un seul trigger, jusqu'au moment j'ai essayé la génération de la clé et la copie des données dans un seul trigger et ça marche bien.
    La prochaine étape, je vais ajouter le test des données et le placer avant la génération de la clé.

  7. #7
    Expert confirmé Avatar de mnitu
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2007
    Messages
    5 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2007
    Messages : 5 611
    Par défaut
    Citation Envoyé par king_abdel Voir le message
    ...peut-être la solution sera de fusionner les trois actions dans un seul trigger, jusqu'au moment j'ai essayé la génération de la clé et la copie des données dans un seul trigger et ça marche bien.
    ...
    ...
    Evitez les triggers ils posent plus des problèmes qu'ils résoudront, sauf trace ou audit.
    ...

Discussions similaires

  1. Jointures multiples sur une même table
    Par hjhjhj dans le forum Langage SQL
    Réponses: 10
    Dernier message: 08/05/2009, 16h48
  2. Trigger Insert after sur une même table
    Par soumimasen dans le forum PL/SQL
    Réponses: 3
    Dernier message: 29/05/2008, 18h49
  3. Accès multiple sur une même table
    Par ravaid dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 18/04/2008, 14h09
  4. Accès multiple sur une même table
    Par ravaid dans le forum Développement
    Réponses: 3
    Dernier message: 18/04/2008, 13h27
  5. Réponses: 2
    Dernier message: 29/09/2004, 09h07

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