mukraker
30-09-2003, 19:23
woher weiß ich wann ich update nehmen muss oder insert ?
kann ich anstatt insert auch update nehem ?
ich weiß halt noch nicht ob der wert schon drin ist oder nicht oder muss ich das auf jeden checken ?
Wie willst Du updaten, wenn nix da ist?
Warum prüfst Du nicht vorher, ob besagter Datensatz vorhanden ist und lässt dann entweder insert, oder update machen, je nachdem?
Oder verkenne ich die Lage?
mukraker
30-09-2003, 19:33
nene so mach ich das bisher auch , aber dachte es geht evtl anders
ne leider geht es meines wissens nicht
wär aber manchmal recht praktisch
is manchmal schon doof immer select und dann update oder insert
manchmal wenn ich die daten sowieso komplett habe lösche ich gleich und mach insert
kommt das selbe bei raus
naja das würde ja nur bedeuten wenn alle gleich sind
7.4.8 REPLACE-Syntax
REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tabelle [(spalten_name,...)]
VALUES (ausdruck,...),(...),...
or REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tabelle [(spalten_name,...)]
SELECT ...
or REPLACE [LOW_PRIORITY | DELAYED]
[INTO] tabelle
SET spalten_name=ausdruck, spalten_name=ausdruck,...
REPLACE funktioniert genau wie INSERT, ausser dass der alte Datensatz gelöscht wird, bevor ein neuer eingefügt wird, wenn ein alter Datensatz in der Tabelle denselben Wert wie der neue auf einem eindeutigen Index hat.
oder versteh ich das falsch
Jep, wenn mit einem Primary Key oder Unique kollidiert wird. Sonst wird ein neuer Datensatz hinzugefügt.
Eigentlich wird ja glaub ich nichts anderes als ein Insert mit Delete vorher gemacht...
... ich kenn ja die Tab von mukraker ned und weiss net was er vor hat ...
war aber ein guter hinweiß
kannte replace zumindest nicht
mfg
also mal als (für euch) neue info.
immer INSERT machen. wenn eine key-verletzung auftritt (error 1023), kann man ein UPDATE machen.
eine key-verletzung kann nur kommen, wenn natürlich auch keys gesetzt sind.