Tom: Mehrere Datensätze auf einmal ändern

Beitrag lesen

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