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

ADO.NET Discussion :

Update/Insert récupérer modification faites par triggers


Sujet :

ADO.NET

  1. #1
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 032
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 032
    Points : 5 470
    Points
    5 470
    Par défaut Update/Insert récupérer modification faites par triggers
    Bonjour,

    lorsque j'update un dataset ( insertion d'un row ou modification) et si la table cible possède un trigger qui va modifier un champs, les modifications ne sont pas retournées à mon dataset.
    Le cas très similaire c'est celui du autoIncrement, identity ou bien sequence sur oracle. La solution qui revient souvent c'est d'avoir une procédure stocké et de récupérer en sortie les champs que je souhaite.
    Seulement je ne connais pas à l'avance mon modèle de donnée et tout ce fait par select * from ...
    Je n'ai donc pas de procédure stocké et j'utilise le comandBuilder pour faire mes requetes d'update et d'insert.

    Comment faire en sorte que le dataSet demande la mise à jour, mais attende également le résultat de la base? ( ici oracle 11g)
    Merci!

  2. #2
    Rédacteur
    Avatar de WOLO Laurent
    Homme Profil pro
    Architecte de base de données
    Inscrit en
    Mars 2003
    Messages
    2 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : Congo-Brazzaville

    Informations professionnelles :
    Activité : Architecte de base de données
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2003
    Messages : 2 741
    Points : 4 414
    Points
    4 414
    Par défaut
    Visiblement tu n'as plus que la possibilité de raffraichir tes données en relisant le tout.

  3. #3
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 032
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 032
    Points : 5 470
    Points
    5 470
    Par défaut
    Oki merci!
    Mais comment récupérer l'ID d'un objet que je viens d'inserer sans le lui avoir fourni ( sequence oracle).
    J'ai pensé a ajouter un return dans l'instruction Insert généré par mon commandBuilder mais comment faire si je ne connais pas le nom de l'ID (la pk).

  4. #4
    Inactif  
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Janvier 2007
    Messages
    6 604
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 63
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC

    Informations forums :
    Inscription : Janvier 2007
    Messages : 6 604
    Points : 13 317
    Points
    13 317
    Par défaut
    Citation Envoyé par micka132 Voir le message
    Oki merci!
    Mais comment récupérer l'ID d'un objet que je viens d'inserer sans le lui avoir fourni ( sequence oracle).
    J'ai pensé a ajouter un return dans l'instruction Insert généré par mon commandBuilder mais comment faire si je ne connais pas le nom de l'ID (la pk).
    Le problème de base est que tu fais deux choix un peu antinomiques : utilisation du DataSet (qui n'a rien d'indispensable) et non complétude des données. (c'est à dire que tu demandes à ton système de persistence de compléter tes données au lieu de le faire coté client - ce qui n'a rien d'indispensable non plus).

    Le mieux est peut être, si tu tiens tellement à utiliser les séquences (c'est souvent le cas chez les utilisateurs d'Oracle) est d'encapsuler ta création de ligne dans la table dans une ps qui te retourne l'ID et de l'appeler classiquement via ADO.Net

    Tout autre solution va quand même relever du bricolage.

  5. #5
    Expert confirmé
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Novembre 2009
    Messages
    2 032
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur .NET

    Informations forums :
    Inscription : Novembre 2009
    Messages : 2 032
    Points : 5 470
    Points
    5 470
    Par défaut
    Je suis d'accord mais je n'ai pas vraiment le choix [...].
    J'aimerai bien proposé autre chose à ma hiearchie mais je ne suis pas compétent donc je n'ai pas vraiment d'autre choix que me débrouiller avec ce qu'on ma dit de faire .


    [Edit] Finalement gràce a la clause RETURNING .. INTO de oracle, et spécifiant que les paramètres de mes Commandes sont de types InputOutput, ainsi qu'en méttant UpdatedRowSource de ma commande à UpdateRowSource.OutputParameters , j'arrive a remonter les nouvelles valeurs.

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 26/03/2015, 18h32
  2. Réponses: 0
    Dernier message: 15/06/2014, 09h57
  3. Réponses: 4
    Dernier message: 11/08/2009, 12h03
  4. Récupérer modifications réalisées par javascript?
    Par Michelk12 dans le forum ASP.NET
    Réponses: 7
    Dernier message: 20/04/2009, 15h58
  5. [Tableaux] Suivre les modifications faits par chaque utilisateur
    Par dessinateurttuyen dans le forum Langage
    Réponses: 7
    Dernier message: 19/07/2006, 10h05

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