REPLACE
INTO tblNames (FirstName, LastName)
VALUES ('John', 'Jones')
Si une contrainte unique de toute nature sur FirstName
, LastName
ou leur combinaison, et elle est violée, les dossiers est supprimé et inséré avec les nouvelles valeurs.
Le dossier sera remplacé si l'une des conditions est remplie:
FirstName
est UNIQUE
et il y a une John
dans le tableau,
LastName
est UNIQUE
et il y a un Jones
dans le tableau,
FirstName, Lastname
est UNIQUE
et il y a un John Jones
dans le tableau.
Notez que REPLACE
opération est une INSERT
peut-être suite à une DELETE
qui affectera toujours la table. Dans les versions les plus récentes de MySQL
, vous devez utiliser INSERT … ON DUPLICATE KEY UPDATE
.
Lorsque je répondais il n'y avait pas de balise "mysql", donc mes exemples de code sont standard SQL – UserControl
Y at-il un moyen d'éviter l'erreur sur l'insertion si l'enregistrement existe déjà? – Matt
Vous pouvez effectuer une sélection pour vérifier si l'entrée existe déjà avant d'effectuer la mise à jour ou l'insertion. Pas sûr de MySQL mais dans SQL Server vous pouvez même éviter le select. Le scénario typique: mise à jour ... où tblNames mis condition clé si @@ rowcount = 0 - le nombre de lignes affectées par la dernière instruction (à savoir la mise à jour) insert en tblNames .... désolé, pour la réponse tardive, j'espère que cela aidera – UserControl