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

Oracle Discussion :

[Loader] Comment mettre à jour sans risque


Sujet :

Oracle

  1. #1
    Membre actif
    Inscrit en
    Mai 2004
    Messages
    297
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 297
    Points : 207
    Points
    207
    Par défaut [Loader] Comment mettre à jour sans risque
    Bonjour,

    L'application est basé sur une BD oracle.
    Je souhaiterais pouvoir mettre à jour directement des données dans une table de cette base par SQL*Loader.
    Cependant je pense que cela peux poser des soucies car un utilisateur peut très bien par le bias de l'application modifier les données de cette table en même temps.
    Y a t'il une solution pour éviter cela ?

    Merci

  2. #2
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    SQL*Loader ne fait que des INSERT en général. Les risques de conflit sur INSERT ne peuvent arriver que si deux transations essaient d'insérer une ligne avec la même clé primaire: cela est-il possible dans votre cas ?

    Si l'utilisateur modifie des données insérées par SQL*Loader car il y a eu COMMIT, il n'y a pas de problème au niveau Oracle mais peut-être au niveau applicatif ?

    Quel est le cas de figure détaillé qui pose vraiment problème ?

  3. #3
    Membre actif
    Inscrit en
    Mai 2004
    Messages
    297
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 297
    Points : 207
    Points
    207
    Par défaut
    Bonjour,

    En effet je n'avais pas vu que l'on ne pouvais pas mettre à jour.
    Mais le problème reste le même.
    En insertion aucun problème.

    En modification ou suppression je peux très bien manipuler un record (par procedure stockée ou autre) qui a déja été chargé par l'application.
    Ainsi l'utilisateur de l'application peut se retrouver avec des données incohérentes pendant une periode et si ce dernier effectue des modifications et "valide il va ecraser celles de l'interface.

    Il faudrait en faite lui faire remonter un signal pour lui indiquer que ces données ne sont plus "valides"

    Y a t'il un moyen simple de faire cela ?

    Merci

  4. #4
    Membre expert

    Profil pro
    Inscrit en
    Février 2006
    Messages
    3 437
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 3 437
    Points : 3 597
    Points
    3 597
    Par défaut
    Ainsi l'utilisateur de l'application peut se retrouver avec des données incohérentes
    Oracle ne permet pas de faire des lectures "sales": si la donnée est en cours de modification, on ne peut que lire l'état de la donnée avant modification. En aucun cas on ne peut lire la valeur d'une donnée en cours de modification par une transaction concurrente.

    Si on veut éviter que 2 transactions concurrentes modifie la même ligne d'une table et que l'une écrase la mise à jour de l'autre (problème du "lost update": ce qui est possible dans certains cas), il faut que les 2 transactions verrouillent la ligne de la table en question avant l'UPDATE avec SELECT ... FOR UPDATE car UPDATE va verrouiller la ligne en exclusif mais seulement entre l'UPDATE jusqu'au COMMIT.

  5. #5
    Membre actif
    Inscrit en
    Mai 2004
    Messages
    297
    Détails du profil
    Informations forums :
    Inscription : Mai 2004
    Messages : 297
    Points : 207
    Points
    207
    Par défaut
    Merci

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 03/05/2010, 22h08
  2. Comment mettre à jour le CD de Delphi 6 ?
    Par Hell dans le forum EDI
    Réponses: 1
    Dernier message: 01/08/2005, 16h39
  3. [Rave Report] Comment mettre à jour le produit
    Par Leesox dans le forum Rave
    Réponses: 2
    Dernier message: 11/04/2005, 21h00
  4. Comment mettre à jour un exécutable ?
    Par rvzip64 dans le forum Langage
    Réponses: 10
    Dernier message: 09/12/2004, 18h43
  5. Comment mettre à jour une ligne sans doublon via déclencheur
    Par fuelcontact dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 02/08/2004, 15h56

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