Est-il possible d'effectuer plusieurs UPDATE en une fois?

Est-il possible d'effectuer plusieurs UPDATE en une fois? - SQL/NoSQL - Programmation

Marsh Posté le 11-10-2007 à 13:01:29    

Bonjour,
 
j'aimerais savoir s'il etait possible d'effectuer plusieurs UPDATE en une fois pour ne pas casser l'integrite des tables dans le cas ou l'on modifierais des clefs entrangeres par exemple.
 
Un exemple:
 
J'ai deux tables: PARENT et CHILD. La clef de PARENT est ID and CHILD a aussi une colonne ID qui est attache a l'ID de PARENT (clef etrangere).
Disons que j'ai une entree "TEST" dans PARENT.ID et une entree "TEST" dans CHILD.ID.
 
J'aimerais modifier l'ID de ces deux entrees et mettre a la place "PLOUP". Toutefois je n'aimerais faire cela sans avoir a creer une nouvelle entree dans PARENT et detruire l'ancienne une fois CHILD mise a jour. Y a-t-il une facon de faire cela en regroupement les deux UPDATE necessaires (dans une requete SQL independante du type de serveur)?
 
Merci :hello:

Reply

Marsh Posté le 11-10-2007 à 13:01:29   

Reply

Marsh Posté le 11-10-2007 à 13:59:01    

Non, mais tu as les transactions qui permettent de gerer tres bien ces contraintes. Si tu aime perdre la maitrise de ce que tu fais, tu peux aussi essayer d'utiliser un trigger.
En primes, la modification de clefs, c'est vraiment à éviter.
Si ton champ clef est modifiable, ca signifie que ce n'est pas une clef et que tu ferai bien mieux d'utiliser un numero sequentiel comme clef technique.

Reply

Marsh Posté le 11-10-2007 à 14:22:33    

BOnjour, de plus, comme tu n'indiques pas le sgbd utilisé, les particularités et limites techniques varient de l'un à l'autre :p

Reply

Marsh Posté le 11-10-2007 à 14:28:06    

C'est effectivement bizarre de vouloir changer la clé :heink:

Reply

Marsh Posté le 11-10-2007 à 14:31:05    

Quel SGBD ?
 
Assez d'accord avec Fred, dans la mesure où... Un identifiant, c'est pas fait pour être modifié :o
 
Cependant, la plupart des SGBD permettent tout de même de jouer avec (mais c'est normalement désactivé par défaut, parceque très dangereux).
 
C'est ce qu'on appelle les "cascade".
 
Sous Oracle par exemple, pour un UPDATE, je ne sais pas si ça marche. Mais un DELETE, tu ajoutes "CASCADE CONSTRAINTS" à la fin de ta requête, et supprimer un père a pour résultat de supprimer tous ses fils. On voit immédiatement la dangerosité de la chose, au cas où ces enfants soient eux-même parents : en gros tu fais "delete personne where nom in ('Adam', 'Eve') cascade constraints" et tu vide ta table :D
 
Gare aux dead locks aussi, si tu as des dépendances cycliques.
 
Bref.
 
Avec Access et SQL Server, c'est des options à spécifier sur les contraintes FK : tu peux spécifier des actions particulières, UPDATE et DELETE (par exemple, planter sur DELETE, mais mettre à jour en cascade sur UPDATE).

Reply

Marsh Posté le 11-10-2007 à 14:41:53    

Sinon, juste comme ça...
 
1/ On dit pas "PLOUP", mais "La poule attrappée par le poulpe a fait pouf !".
2/ Sans rire, c'est quoi ploup ? Une valeur, ou si tu veux renommer ton champ id avec ce nom ?

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed