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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [ACCESS] Requête MAJ avec un Max

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ACCESS] Requête MAJ avec un Max

n°429705
PatBasi
Posté le 16-06-2003 à 18:03:44  profilanswer
 

Je cherche confirmation de l'impossibilité d'effectuer directement la mise à jour suivante: dasn une table j'ai un champ priorité, je souhaite mettre certaines de ces priorités au niveau max déjà existant
 
J'ai donc essayé ceci:

UPDATE A_BEBOR9
SET A_BEBOR9.PRIORITE = (SELECT MAX([PRIORITE]) AS MAXIM FROM [A_BEBOR9] AS Tmp),
WHERE (((A_BEBOR9.STATUS)=94));


 
Le problème est, il me semble, que ACCESS n'accepte pas bien les update/delete mixés avec des regroupements ou calculs.
 
Le seul moyen que je trouve c'est macro avec création d'une table bidon où je stocke le max et ensuite la MAJ.
 
Est-ce que j'ai manqué une astuce?
 
Merci pour vos confirmations, ou mieux, astuces  :D


---------------
"A conclusion is the place where you got tired of thinking." Steven Wright | It's 2 pièges à loups #1 #2
mood
Publicité
Posté le 16-06-2003 à 18:03:44  profilanswer
 

n°429849
MagicBuzz
Posté le 16-06-2003 à 21:12:04  profilanswer
 

Je dirais surtout que tu as un problème de parenthères...

n°429850
MagicBuzz
Posté le 16-06-2003 à 21:12:53  profilanswer
 

Ah non, excuse-moi, pas fait gaffe, c'est bon en fait.
 
Vire les parenthèses dans ton where, elles servent à rien et c'est illisible.

n°429862
MagicBuzz
Posté le 16-06-2003 à 21:23:50  profilanswer
 

Bon, je reposte ce que j'avais posté en premier :
 
En fait, SQL Server (et Oracle aussi il me semble) supportent pas la mise à jour d'un champ dans une requête s'il est replacé par une valeur du même champ, soumise à une condition qui pourrait ne plus être vérifiée suite aux modification.
 
Imagine :
 
Table de 200 Mo
Mémoire de 16 Mo
Swap de 64 Mo
(c'est la config d'un certain nombre de machine "serveur" encore à l'heure actuelle)
 
Bon, ben on voit bien que le SGBD aurait beau faire tout ce qu'il voudra, il devrait la faire en plusieurs fois cette requête.
 
Hors, s'il commence à faire la requête et que les nouvelles valeurs rendent la condition, ou la valeur de remplacement différente pour les données qui seront mises à jours dans la passe suivante, alors on casse toute l'intégrité de la base.
 
Donc ça bloque.
 
Ta requête en elle-même ne fait pas ça, mais imagine que tu fasses un max() + 1, à ce moment tu comprendras vite ce que je veux dire : le deuxième lot de mises à jour va se baser sur les données qui viennent juste d'être inserrée, et c'est donc max() +  qui sera réellement insérré, et ainsi de suite.
 
Du coup Access te pète à la figure à cause de ça. SQL Server fait pareil. J'ai pas de base Oracle pour confirmer qu'il bloque aussi (d'un autre côté Oracle effectue ses transactions internes d'une façon un peu plus poussée que SQL Server donc il n'a peut-être pas cette limitation)

n°430024
PatBasi
Posté le 16-06-2003 à 23:34:21  profilanswer
 

Merci pour la réponse.
 
Je n'avais pas trop poussé la réfléxion et ce que tu exposes est plein de bon sens et apparaît assez évident après coup :) .
 
Pour les parenthèses c'est juste que pour simlfier et recentrer sur mon problème j'ai allégé la requête un tant soit peu ;)
 
Aller, c'est parti pour une table bidon!


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

  [ACCESS] Requête MAJ avec un Max

 

Sujets relatifs
REquete asp sur sql serveur 2000comment mettre une base access en executable
[ASP syntaxe sql ]requete d'interrogations d'une base access (newbee)[VBA + Access] Récupérer tous les champs de mes tables Access...
problemes vba access (listes deroulantes)[access]petit souci tout bete de requete sql...
création d'une aide dans access 97pb avec du sql sous access
Plus de sujets relatifs à : [ACCESS] Requête MAJ avec un Max


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