Bonjour,
Je pense que tout est dans le titre.
Merci.
Version imprimable
Bonjour,
Je pense que tout est dans le titre.
Merci.
Si vous tentez d'insérer une ligne dont les valeurs pour un index UNIQUE ou une PRIMARY KEY existent déjà, avec REPLACE l'ancienne sera effacée et la nouvelle insérée, tandis qu'INSERT vous remontera une erreur.
J'imagine que la vérification que fait REPLACE a un coût, mais comme les deux ne font pas la même chose, s'il y a un choix à faire entre REPLACE et INSERT, il dépendra plutôt du besoin.
C'est ce que je me suis dit aussi, REPLACE vérifie l'existence d'enregistrements, auquel cas, elle supprime et insert à nouveau pour le mettre à jour. En gros, si un enregistrement existe déjà elle va le mettre à jour en effectuant les opérations DELETE et INSERT.
et comme tu l'as précisé ceci a peu être un coût!
Toutefois REPLACE n'est pas normalisé...
En SQL courant :
(Pour bien mettre en évidence les constantes, je les ai noté comme des chaînes)Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 UPDATE matable SET colonne1 = 'valeur1' , ... WHERE col_id = 'val_id' ; INSERT INTO matable ( col_id , colonne1 , ... ) SELECT 'val_id' , 'valeur1' , ... FROM DUAL // ou toute table contenant une ligne et une seule WHERE NOT EXISTS ( SELECT 1 FROM matable WHERE col_id = 'val_id' ) ;