Hello,
REPLACE arbeitet prinzipiell wie INSERT.
Wenn nun aber ein Wert in der ID_ADRESSE ( PRIMARY UNIQUE KEY) bereits vorhanden ist, wird der vorhandene Datensatz gegen den neuen ausgetauscht.Nun wäre noch auszuprobieren, wie sich das System verhält, wenn es noch eine weitere UNIQUE KEY Spalte gibt, und man versucht, in diesem Feld eine Doublette einzufügen und die entsprechende ID _nicht_ in der Tabelle vorhanden ist.
Wird dann dieser Datensatz auch ausgetauscht? Das wäre bestimmt nicht erwünscht, wenn eine falsche ID angesprochen wird...
Ergebnis:
Es besteht ein Datensatz mit den Werten
ID_ADRESSE(PK) VORNAME NACHNAME NUMI(UK)
16 Paul Pille 33
12 Rosalie Rotkäppchen
Replace into ADRESSE (ID_ADRESSE, VORNAME, NACHNAME, NUMI )
values(97,'Paul','Panther',33),(12,'Rosalie','Rotkäppchen',52);
ID_ADRESSE(PK) VORNAME NACHNAME NUMI(UK)
12 Rosalie Rotkäppchen 52
97 Paul Panther 33
(PK) = Primary Key
(UK) = Unique Key
Man sieht also, dass der Satz mit der ID 16 mit dem Satz mit der ID 97 überschrieben wurde, da in der Spalte NUMI berteits ein Wert 33 vorhanden war.
REPLACE ist also auf jeden Fall mit Vorsicht zu genießen, wenn man nicht eine Bindung über die IDs herstellen kann. Wie sdhon erwähnt, fand ich bisher keine vernünftigen Beschreibungen dazu.
Wenn die Tabelle nur eine einzige UK-Spalte hat, nämlich den Primary Key, funktioniert es aber bestens.
Liebe Grüße aus http://www.braunschweig.de
Tom
Fortschritt entsteht nur durch die Auseinandersetzung der Kreativen
Nur selber lernen macht schlau