6.4 Manipulation de données : SELECT , INSERT , UPDATE , DELETE
6 Référence du langage MySQL
Manuel de Référence MySQL 4.1 : Version Française
. Syntaxe de SELECT . Syntaxe de HANDLER . Syntaxe de INSERT . Syntaxe de INSERT DELAYED . Syntaxe de UPDATE . Syntaxe de DELETE . Syntaxe de TRUNCATE ->Syntaxe de REPLACE . Syntaxe de LOAD DATA INFILE . Syntaxe de DO
|
6.4.8 Syntaxe de REPLACE
REPLACE [LOW_PRIORITY | DELAYED] [INTO] nom_de_table [(nom_de_colonne,...)] VALUES (expression,...),(...),... ou REPLACE [LOW_PRIORITY | DELAYED] [INTO] nom_de_table [(nom_de_colonne,...)] SELECT ... ou REPLACE [LOW_PRIORITY | DELAYED] [INTO] nom_de_table SET col_name=expression, nom_de_colonne=expression,...
|
REPLACE
fonctionne exactement comme
INSERT
, sauf que si une vieille
ligne dans la table à la même valeur qu'une nouvelle pour un index
UNIQUE
ou une
PRIMARY KEY
, la vielle ligne sera effacée avant que la nouvelle ne
soit insérée.
Syntaxe des
INSERT
.En d'autres termes, vous ne pouvez pas accéder aux valeurs de l'ancienne ligne à
partir d'une requête
REPLACE
. Dans quelques vieilles versions de MySQL, il
apparaît que c'était possible, mais c'etait un dysfonctionnement qui a été corrigé
depuis.
Pour utiliser
REPLACE
vous devez avoir les privilèges
INSERT
et
DELETE
sur la table.
Quand vous utilisez une commande
REPLACE
,
mysql_affected_rows()
retournera 2 si une nouvelle ligne en remplace une existante, et cela parce qu'il
y'aura eu une insertion puis une suppression.
Cela aide à savoir si
REPLACE
a ajouté ou a remplacé une ligne :
Testez si le nombre de lignes affectées est égal à 1 (ajout) ou s'il est égal
à 2 (remplacement).
Notez que si vous n'utilisez pas un index
UNIQUE
ou une
PRIMARY KEY
,
utiliser un
REPLACE
n'a pas de sens vu que cela revient à utiliser un
INSERT
.
|