phpbar.de logo

Mailinglisten-Archive

[php] replace/update

[php] replace/update

Cornelia Boenigk php_(at)_phpcenter.de
Tue, 31 Jul 2001 01:44:01 +0200


Hallo swEk (so moecht ich nicht heissen;-)

> woran orientieren die sich denn?
an dem was Du angibst;-)
> also ich
> meine mit welcher spalte vergleichen die?
Hier wird keine Vergleichsoperation durchgefuehrt. Du sagst und das
System macht.

Update: damit kann man bestehende Datensaetze updaten, wie der Name
sagt. Man kann die Werte in einer oder mehreren Spalten veraendern.
Dabei werden die jeweiligen Spalten angegeben, deren Wert modifiziert
wird und wenn man keine weitere Bedingung angibt, werden alle Werte in
der Spalte (in der ganzen Tabelle also) auf den neuen Wert gesetzt.

UPDATE tabellenname SET spalte1=neuerWert1, spalte2=neuer Wert2;
setzt in der gesamten Tabelle spalte1 auf neuerWert1 und spalte2 auf
neuerWert2.

UPDATE tabellenname SET spalte1=neuerWert1, spalte2=neuer Wert2 WHERE
bedingung;
setzt in den Datensaetzen, die der Bedingung entsprechen spalte1 auf
neuerWert1 und spalte2 auf neuerWert2.

> er findet die alte nummer,
> behält sie bei und updatet die angegebene spalte.
Richtig.

Replace: ist so was Aehnliches wie INSERT. Hier wird ein neuer
Datensatz eingefuegt und nicht ein bestehender veraendert, allenfalls
rausgeschmissen.

Der Unterschied zu Insert: wenn ein Datensatz in eine Tabelle
eingefuegt werden soll, die einen eindeutigen Index auf einem Attribut
hat, und der Index existiert schon in der Tabelle, dann wird der alte
Datensatz mit diesem Index erst aus der Tabelle gekillt, bevor der
neue Datensatz mit demselben Wert in dem Indexattribut eingefuegt
wird. Weil bei eindeutigen Indexen jeder Wert nur einmal vorkommen
darf.

> wie findet das REPLACE den
> betreffenden record wieder?
Replace findet den alten Datensatz ueber den eindeutigen Index,
schmeisst ihn raus und vergibt diesen Index jetzt an den neuen
Datensatz. So wird auch dieser gefunden;-)

> also grundsätzlich die frage: wann greift REPLACE?
Wenn die Tabelle einen eindeutigen Index hat und dieser Wert zum
zweiten Mal vergeben wird.

Hier gilt dasselbe: *Du* gibst die Spalten an und die Werte

REPLACE tabellenname (spalte1, spalte2, ...) VALUES (expr1, expr2,...)

wobei die Reihenfolge und Anzahl der Spalten und Werte einander
entsprechen muessen.

Gruss
Conni







php::bar PHP Wiki   -   Listenarchive