Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1580 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Résolu][Oracle] Mutating table sur un update

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[Résolu][Oracle] Mutating table sur un update

n°1282075
KrisCool
“Verbeux„
Posté le 12-01-2006 à 13:51:57  profilanswer
 

Environnement Oracle 8i.
 
J'ai deux tables, A et B.
Je dois mettre à jour un champ de la table A en utilisant des champs contenus dans la table A et la table B.
Cette mise à jour étant un minimum complexe, une fonction est utilisée pour calculer la nouvelle valeur.
 
Problème: mettre un jour un champ de A avec une fonction qui accède à A et B, ça renvoie invariablement:
ORA-04091: table A en mutation, déclencheur/fonction de peut pas la voir.
 
J'ai cherché à droite et à gauche sur le net, mais je n'ai pas trouvé grand chose, la plupart du temps les pages qui traitent de cette erreur le font dans le cadre d'un trigger, ce qui n'est pas mon cas.
 
Quelles sont les solutions dont je dispose pour contourner le problème, sachant que toute modification du schéma de la base est à éviter ?
Merci par avance.


Message édité par KrisCool le 12-01-2006 à 15:30:55

---------------
Loose Change Lies | Bars | Last.fm
mood
Publicité
Posté le 12-01-2006 à 13:51:57  profilanswer
 

n°1282121
orafrance
Posté le 12-01-2006 à 14:39:12  profilanswer
 

http://sgbd.developpez.com/oracle/ora-04091/ :)
 
c'est quoi le code qui déclenche ton erreur ?
 
Si la fonction est utilisée dans un update alors c'est comme si tu étais dans un trigger


Message édité par orafrance le 12-01-2006 à 14:40:22
n°1282202
KrisCool
“Verbeux„
Posté le 12-01-2006 à 15:30:20  profilanswer
 

C'est sans doute "comme si" j'étais dans un trigger, mais le cas diffère dans le sens où certaines solutions ne sont applicables qu'aux triggers.
 
Le problème a finalement été résolu par une modification de schéma.
Merci !


Message édité par KrisCool le 12-01-2006 à 15:30:34

---------------
Loose Change Lies | Bars | Last.fm
n°1282208
orafrance
Posté le 12-01-2006 à 15:35:05  profilanswer
 

mais encore ?

n°1282756
KrisCool
“Verbeux„
Posté le 13-01-2006 à 11:05:15  profilanswer
 

L'application concernée utilise des requêtes générées.
Dans le cas de certaines requêtes de type UPDATE, il n'est pas possible de générer automatiquement la requête si l'UPDATE accède à plusieurs tables différentes. Dans ce cas là, j'avais fait le choix de déporter une partie de l'update dans une fonction qui elle même accède aux différentes tables (à ce stade, c'est une restriction de notre génération de requêtes).
 
Sauf que, comme je l'ai expliqué plus haut, ça ne fonctionne pas, Oracle ne permet pas ce type de manipulation. Pour des questions d'intégrité on ne peut pas ignorer délibérément l'erreur.
 
Il a été choisi de faire une modification de schéma permettant que toutes les données requises par l'update proviennent de la même table, ce qui nous a permis d'exploiter notre génération de requêtes normalement, sans avoir à passer par une fonction tierce.


---------------
Loose Change Lies | Bars | Last.fm
n°1282869
orafrance
Posté le 13-01-2006 à 12:21:59  profilanswer
 

OK, merci :)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [Résolu][Oracle] Mutating table sur un update

 

Sujets relatifs
Liste de donnée sur un autre ongle(Resolu)me manque PHP_MYSQL.DLL [Résolu]
[C / UNIX ] Semaphore entre plusieurs processus [Résolu]Figer un graphique un peu trop éphémère...(Résolu)
[Delphi]Imprimer une Tablecompter le nombre de fichier dans une table
[RESOLU] vérification si mail est déjà dans la bdd[Oracle] Désactiver un trigger pendant un UPDATE
Mettre en forme le message d'un mail [RESOLU] 
Plus de sujets relatifs à : [Résolu][Oracle] Mutating table sur un update


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR