UPDATE
[LOW_PRIORITY] [IGNORE] tbl_name
SET col_name1=expr1 [, col_name2=expr2
...]
[WHERE where_definition]
[ORDER BY ...]
[LIMIT row_count]
Syntaxe multi-tables :
UPDATE [LOW_PRIORITY]
[IGNORE] tbl_name [, tbl_name ...]
SET col_name1=expr1 [, col_name2=expr2
...]
[WHERE where_definition]
UPDATE met à jour des enregistrements
dans une tables avec de nouvelles
valeurs. La clause SET indique les
colonnes à modifier et les
valeurs à leur donner. La clause
WHERE, si fournie, spécifie
les enregistrements à mettre
à jour. Sinon, tous les enregistrements
sont mis à jour. Si la clause
ORDER BY est fournie, les enregistrements
seront mis à jour dans l'ordre
spécifié.
La commande UPDATE accepte les options
suivantes :
Si vous spécifiez le mot clef
LOW_PRIORITY, l'exécution de
l'UPDATE sera repoussé jusqu'à
ce que aucun client ne lise plus de
la table.
Si vous spécifiez le mot clef
IGNORE, la mise à jour ne s'interrompra
pas même si on rencontre des
problèmes d'unicité
de clefs durant l'opération.
Les enregistrements posant problèmes
ne seront pas mis à jour.
Si vous accédez à une
colonne d'une table tbl_name dans
une expression, UPDATE utilisera la
valeur courante de la colonne.
Par exemple, la requête suivante
ajoute une année à l'âge
actuel de tout le monde :
mysql> UPDATE
persondata SET age=age+1;
Les requêtes UPDATE sont évaluées
de gauche à droite. Par exemple,
la requête suivante double la
valeur de la colonnes âge, puis
l'incrémente :
mysql> UPDATE
persondata SET age=age*2, age=age+1;
Si vous changez la valeur d'une colonne
en lui spécifiant sa valeur
actuelle, MySQL s'en aper¸oit
et ne fait pas la mise à jour.
UPDATE retourne le nombre d'enregistrements
ayant changé. Depuis la version
3.22 de MySQL, la fonction mysql_info()
de l'API C retourne le nombre de colonnes
qui correspondaient, le nombre de
colonnes mises à jour et le
nombre d'erreurs générées
pendant l'UPDATE.
Dans la version 3.23 de MySQL, vous
pouvez utilisez le code LIMIT # pour
vous assurer que seul un nombre d'enregistrements
bien précis est changé.
Avant MySQL 4.0.13, LIMIT est une
restrictions sur le nombre de lignes
affectées. Cette clause stoppe
dès que row_count ont été
trouvées par la clause WHERE.
Depuis la version 4.0.13, LIMIT est
une restriction sur le nombre de lignes
trouvées. La commande s'arrête
une fois que row_count lignes ont
été trouvées
par la clause WHERE, qu'elles ait
été changées
ou pas.
Ai une clause ORDER BY est utilisée
(disponible depuis MySQL version 4.0.0),
les lignes seront modifiées
selon cet ordre. Ce n'est vraiment
utile qu'en conjonction avec LIMIT.
Depuis MySQL version 4.0.4, vous pouvez
aussi faire des opérations
de UPDATE qui couvrent plusieurs tables
:
UPDATE items,month
SET items.price=month.price
WHERE items.id=month.id;
L'exemple ci-dessus montre une jointure
interne, en utilisant la virgule comme
séparateur, mais une commande
UPDATE multi-table peut utiliser n'importe
quel type de jointure autorisée
dans une commande SELECT, tel qu'un
LEFT JOIN.
Note : vous ne pouvez pas utiliser
ORDER BY ou LIMIT avec les UPDATE
multi-table.
MySQL Reference Manual that can
be found at dev.mysql.com. The original
Reference Manual is in English, and
this translation is not necessarily
as up to date as the English version.
|