phpbar.de logo

Mailinglisten-Archive

[mysql-de] UPDATE und wenn nicht forhanden INSERT?

[mysql-de] UPDATE und wenn nicht forhanden INSERT?

ibekowies at shavingkiwis.de ibekowies at shavingkiwis.de
Mit Jul 14 15:50:16 CEST 2004


Hallo!

So ohne weiteres geht das m.M.n. nicht.

Moeglichkeit #1 waere mit dem Script (innerhalb einer Transaktion) erst den UPDATE 
machen und wenn AffectedRows() nicht anschlaegt, den INSERT hinterherschicken. 
(Achtung, AffectedRows() zeigt nur ein erfolgreiches UPDATE an, wenn sich der 
Datensatz auch wirklich inhaltlich geaendert hat)

Möglichkeit #2 waere ein Trigger auf Datenbankseite, der bei fehlgeschlagenem 
UPDATE ein INSERT mit denselben Daten hinterherschickt, dann haettest du nur einen 
einzigen query. Allerdings weiss ich nicht, ob Mysql mittlerweile Trigger beherscht.

REPLACE ist in deinem Fall eher unnuetz, da es dann ja sozusagen immer INSERTS 
waeren (und die kosten viel Resourcen, da die Indexe gepflegt werden muessen...)



Gruesse, Ilja


On 14 Jul 2004 at 15:34, Ruprecht Helms wrote:

> Michael Schoenboeck wrote:
> 
> >Moin,
> >
> >
> >
> >Gibt’s da nen parameter den man beu UPDATE angeben kann?
> >  
> >
> sollte, sofern es einen gibt in der Doku zu mysql stehen (www.mysql.de)
> 
> >Oder wie kann ich das anstellen, das ich nur ein query hab?
> >  
> >
> Gegenfrage, wie bringst Du einen SELECT mit einer Entscheidung dann ein 
> UPDATE
> oder ein INSERT durchzuführen in eine SQL-Anweisung.
> 
> Das mache ich typischerweise mittels eines PHP-Skriptes. Immerhin 
> brauchst Du eine
> If-Abfrage, die auf den SELECT reagiert.
> 
> Gruss
> Ruprecht Helms
> 
> -------------------------------------------------------------------------------------
> Ruprecht Helms IT-Service & Softwareentwicklung
> 
> Tel./Fax +49[0]7621 16 99 16
> Web: http://www.rheyn.de
> 
> -- 
> Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
> -->>  http://www.4t2.com/mysql 
> 
> 


-- 
Infos zur Mailingliste, zur Teilnahme und zum An- und Abmelden unter
-->>  http://www.4t2.com/mysql 


php::bar PHP Wiki   -   Listenarchive