REPLACE (instruction)

REPLACE INTO table (columns) VALUES (…)

Fonctionne comme INSERT, mais supprime d’abord la ligne qui a la même clé primaire ou la même valeur unique. Les colonnes non mentionnées reçoivent donc les valeurs par défaut, et non les valeurs d’origine.

Exemples

CREATE TABLE price_list (code VARCHAR(10) PRIMARY KEY, price DECIMAL(10,2) NOT NULL, note VARCHAR(50) NOT NULL DEFAULT '');
INSERT INTO price_list VALUES ('COFFEE1', 17.90, 'on sale until the end of March');
REPLACE INTO price_list (code, price) VALUES ('COFFEE1', 18.50);
SELECT * FROM price_list;
+---------+-------+------+
| code    | price | note |
+---------+-------+------+
| COFFEE1 | 18.50 |      |
+---------+-------+------+

Points d’attention

  • La ligne d’origine est supprimée – la note de l’exemple a disparu. La suppression déclenche aussi les clés étrangères avec ON DELETE CASCADE, et des données liées peuvent être supprimées avec elle.
  • Pour modifier une ligne existante, INSERT … ON DUPLICATE KEY UPDATE est presque toujours préférable.
  • À ne pas confondre avec la fonction REPLACE(), qui remplace du texte.

Voir aussi :
ON DUPLICATE KEY UPDATE
INSERT
REPLACE()