REPLACE INTO équivaut sémantiquement à une opération combinée DELETE + INSERT : elle écrase la ligne existante lorsque la clé primaire correspond, ou insère une nouvelle ligne en l'absence de correspondance.
Syntaxe
REPLACE INTO table_name [(column_name,...)] VALUES ({Constant|NULL|DEFAULT},...),(...),...
Paramètres
| Paramètre | Description |
|---|---|
table_name |
Table cible. |
column_name |
(Facultatif) Colonnes à renseigner. Omettez ce paramètre pour insérer des valeurs dans toutes les colonnes selon leur ordre de définition. |
Constant|NULL|DEFAULT |
Valeur de chaque colonne : constante littérale, NULL ou valeur DEFAULT de la colonne. |
Remarque
La clé primaire peut porter sur une seule colonne ou être composite (plusieurs colonnes).
Fonctionnement
Lors de l'exécution de REPLACE INTO, le système vérifie l'existence d'une ligne dotée de la même clé primaire :
Si la ligne existe : le système supprime la ligne existante puis insère la nouvelle.
Si la ligne n'existe pas : le système insère directement la ligne.
Exemples
Insérer une seule ligne en spécifiant les noms de colonnes
REPLACE INTO customer(customer_id,customer_name,phone_num,city_name,sex,id_number,home_address,office_address,age,login_time)
VALUES
(002367,'Bob','13900001234','Hangzhou',0,'987300','WestLake','CloudTown',23,'2018-03-02 10:00:00');
Insérer plusieurs lignes sans spécifier les noms de colonnes
Omettez la liste des colonnes si vous fournissez des valeurs pour toutes les colonnes dans l'ordre de leur définition.
REPLACE INTO customer VALUES
(002367,'John','13900001111','Hangzhou',0,'987300','WestLake','CloudTown',23,'2018-03-02 10:00:00'),
(002368,'Adam','13900002222','Hangzhou',0,'987300','WestLake','CloudTown',28,'2018-08-01 11:00:00'),
(002369,'Brook','13900003333','Hangzhou',1,'987300','WestLake','CloudTown',35,'2018-09-12 08:11:00');