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 :

Trigger - Duplication de ligne


Sujet :

PL/SQL Oracle

  1. #1
    Membre confirmé
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Décembre 2017
    Messages : 66
    Par défaut Trigger - Duplication de ligne
    Bonjour à tous,

    Je souhaiterais à l'aide d'un trigger "dupliquer" une ligne au moment de l'insertion depuis un tableau :
    Nom : 1.jpg
Affichages : 517
Taille : 24,4 Ko

    J'effectue une recherche par article dans mon tableau, puis lorsque je clique sur le +, cela insère une nouvelle ligne. J'aimerais que cette nouvelle ligne ne soit pas vide, mais que les colonnes "ARTICLE" et "Identificateur" (ID de l'article), se renseigne automatiquement dans cette nouvelle ligne.

    Actuellement, j'ai fait un trigger, où lorsque je saisis la référence de l'article dans la colonne "ARTICLE", l'identificateur se renseigne automatiquement :
    Nom : 2.jpg
Affichages : 494
Taille : 23,8 Ko

    Mais je souhaiterais améliorer le processus.... Sachant que dans MaTable, j'ai plusieurs articles stockés, et que le choix de l'article se fait à l'entrée du tableau dans la zone de recherche....

    Voici mon trigger actuel :
    Nom : 3.jpg
Affichages : 519
Taille : 115,7 Ko

    Merci beaucoup pour votre aide !

  2. #2
    Membre Expert
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Par défaut
    Juste une question par rapport à l'utilisation

    Que se passe t-il si l'utilisateur clique pleins de fois sur le bouton +
    Vous crééez autant de lignes directement en base avec des données incomplètes ?

    Ne serait-il pas plus judicieux de gérer l'affichage de vos colonnes (Auto initialisation par défaut) via le langage que vous utilisez pour créer les tableaux, puis effectuer les contrôles nécessaires à l'aide de ce même langage (champs obligatoires par exemple) avant de mettre les données en base de données.

    Ceci simplifierait grandement votre approche de la problématique.
    Mais peut-être que mes interrogations sont à côté de la plaque, ne connaissant pas votre environnement.

  3. #3
    Membre confirmé
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Décembre 2017
    Messages : 66
    Par défaut
    Bonjour,

    Merci pour votre réponse. En fait c'est un cas très spécial où seulement un seul utilisateur aura l'accès. Il ne faut surtout pas un ajout automatique, c'est à mon utilisateur de "décider" si il faut renseigner ou non un prix en fonction d'un tas d'analyse donc ce n'est pas un ajout "régulier" ni automatique en fonction de quelque chose de précis. Si seulement.... donc non mon utilisateur a vraiment besoin de ce tableau afin d'être autonome.

  4. #4
    Membre Expert
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Par défaut
    De mon point de vue, ce n'est pas à la BDD de gérer la "cosmétique" de vos écrans.

    La solution la plus simple serait de gérer entièrement votre tableau avec des virtuels et lorsque l'utilisateur valide la ligne pour création, à ce moment là seulement, vous faites l'INSERT (et COMMIT) de la ligne dans la BDD
    De cette façon, pas de trigger à gérer

  5. #5
    Membre confirmé
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Décembre 2017
    Messages : 66
    Par défaut
    Je ne suis pas sûre d'avoir tout compris...
    Je veux simplifier au max l'utilisation donc je voudrais que mon utilisateur ai juste à saisir le prix et l'année/mois, le reste se remplira en auto.
    Et il n'y a rien de cosmétique... Je mets à dispos ce tableau pour ne pas avoir à donner les accès aux TOAD à mon utilisateur pour compléter les lignes qui peuvent éventuellement manquer... et/ou qui doivent être corrigées.

  6. #6
    Membre Expert
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Par défaut
    Ce que vous abordé est, "normalement", du domaine de la programmation et non de la BDD.

    L'initialisation par défaut de certaines valeurs (avec des valeurs par défaut ou les valeurs de la ligne précédente), le fait de positionner l'utilisateur directement sur tel ou tel champs (dans votre cas, la date ou le prix), ce sont des comportements qui doivent être gérés par le langage de programmation que vous utilisez, en aucun cas par des triggers ou autres manipulation BDD.

    Maintenant je me trompe aussi peut être sur votre besoin, car en quel langage sont gérés vos écrans / tableaux ?

  7. #7
    Membre confirmé
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Décembre 2017
    Messages : 66
    Par défaut
    J'avoue ça se discute mais c'est de ma faute je ne vous ai pas donné assez d'informations...
    Ce tableau est un objet de mon ERP et l'affichage de ce tableau se fait à l'aide de requêtes SQL.

  8. #8
    Membre Expert
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Par défaut
    Et avez-vous la main pour modifier l'écran de l'ERP ?
    Si oui, l'idée serait donc de gérer les éléments du tableau soit :
    - Dans une table temporaire dont vous videz le contenu en table réelle lors d'une validation globale (Par un bouton "Valider" sur l'écran)
    - Via des variables dont vous videz le contenu lors de la validation à ligne

    Dans les deux cas, il doit être possible dans l'ERP de faire une init par défaut des champs et positionner l'utilisateur directement sur les champs qu'il doit renseigner.

  9. #9
    Membre confirmé
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Décembre 2017
    Messages : 66
    Par défaut
    Non dans ce genre de tableau, je ne peux pas rajouter de bouton...
    Pour qu'il se passe une action au moment de la validation ou insertion dans ce genre de tableau, ce sont les triggers...
    J'ai bien sûr la possibilité de faire saisir le prix dans un champ "fictif" pour l'utilisateur et ensuite de venir faire tourner une procédure tous les soirs qui va me permettre de récupérer ces données et de les insérer dans ma table mais j'aurais voulu ne pas en arriver là pour ne pas avoir à faire tourner des procédures le soir pour une chose qui me paraît si simple...

    Aucune idée pour que mon utilisateur puisse insérer une nouvelle ligne dans ma table sans avoir à saisir la référence de l'article ?? Je n'en suis pourtant pas très loin dans mon trigger...

  10. #10
    Membre Expert
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Par défaut
    Dans ce cas, pouvez-vous utiliser des valeurs par défaut en modifiant la structure de la table ?
    Cela sera plus "propre" qu'un trigger

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    alter table foo
    modify( col2 varchar2(10) default 'foo' );

  11. #11
    Membre confirmé
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Décembre 2017
    Messages : 66
    Par défaut
    Oui mais je ne connais pas la valeur par défaut...avant l'insertion... ça peut être n'importe quelle référence de produit... Je n'en ai pas qu'une seule...

  12. #12
    Membre Expert
    Homme Profil pro
    Chef de projet MOA
    Inscrit en
    Février 2012
    Messages
    652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Morbihan (Bretagne)

    Informations professionnelles :
    Activité : Chef de projet MOA
    Secteur : Distribution

    Informations forums :
    Inscription : Février 2012
    Messages : 652
    Par défaut
    Effectivement, je me suis un peu perdu par rapport à la demande initiale !


    Le problème c'est que je ne connais pas votre ERP et donc comment il est géré et que je reste persuadé que la meilleure solution réside dans l'utilisation du langage qui a été utilisé pour développé l'ERP
    Quoiqu'il en soit, lorsque vous cliquez sur le bouton [+], pouvez-vous transmettre le code de l'article présent au niveau de la loupe a une procédure PL/SQL ?

  13. #13
    Membre confirmé
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2017
    Messages
    66
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Doubs (Franche Comté)

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Décembre 2017
    Messages : 66
    Par défaut
    lol pas de soucis !
    Toutes modifications / améliorations des objets de l'ERP se fait sous SQL (Oracle).
    Alors là j'avoue que j'en sais strictement rien...ni comment m'y prendre. Je pensais plutôt essayer de récupérer la référence à partir du dernier enregistrement AAAAMM le plus récent... car j'ai bien compris qu'il faut que j'arrive à stocker la référence saisie à qqe part... (mais où et comment...)
    Par contre, dans le cas où il n'y a encore pas d'enregistrement dans ma table pour la référence recherchée, ça va me poser un problème....

    Si jamais, ça peut aider / donner des idées, dans mon tableau je peux avoir la possibilité d'afficher plusieurs petites box.... :
    Nom : Tableau.jpg
Affichages : 424
Taille : 43,4 Ko

Discussions similaires

  1. [Trigger] duplication suite à un trigger
    Par GLDavid dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 14/05/2007, 11h53
  2. Trigger sur plusieurs lignes
    Par Jérôme Lambert dans le forum Développement
    Réponses: 2
    Dernier message: 30/11/2006, 23h28
  3. duplication de lignes
    Par tomh dans le forum Langage SQL
    Réponses: 6
    Dernier message: 09/08/2006, 17h54
  4. Réponses: 2
    Dernier message: 10/05/2005, 18h15
  5. Trigger inserant une ligne auto en cas d'UPDATE de 0 lign
    Par bbshadoks dans le forum Développement
    Réponses: 4
    Dernier message: 04/05/2005, 13h00

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