UPDATE [LOW_PRIORITY] [IGNORE]tbl_name
SETcol_name1
=expr1
[,col_name2
=expr2
...] [WHEREwhere_definition
] [ORDER BY ...] [LIMITrow_count
]
Syntaxe multi-tables :
UPDATE [LOW_PRIORITY] [IGNORE]tbl_name
[,tbl_name
...] SETcol_name1
=expr1
[,col_name2
=expr2
...] [WHEREwhere_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.
This is a translation of the 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.