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()