Bonjour,
Je pense que tout est dans le titre.
Merci.
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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' ) ;
Modérateur Langage SQL
Règles du forum Langage SQL à lire par tous,
N'hésitez pas à consulter les cours SQL
N'oubliez pas le bouton
et pensez aux balises [code]
Si une réponse vous a aidé à résoudre votre problème, n'oubliez pas de voter pour elle en cliquant sur
Aide-toi et le forum t'aidera : Un problème exposé sans mentionner les tentatives de résolution infructueuses peut laisser supposer que le posteur attend qu'on fasse son travail à sa place... et ne donne pas envie d'y répondre.
Partager