UPDATE oder INSERT

UPDATE oder INSERT

am 17.01.2006 00:11:17 von kscheller

Hallo,

gibt es eine einfache Möglichkeit, einen Datensatz zu aktualisieren und
bei nicht-Vorhandensein neu anzulegen?

Mir scheint, ich muss das in zwei SQL-Statements unterbringen, und das
ist reichlich ineffektiv (also erst ein SELECT und dann entscheiden, ob
INSERT oder UPDATE). Gibts da wirklich keine andere, elegantere Methode?

Servus,
Konni

--
http://www.scharfe-wochen.de/ - Meerrettichspezialitäten und Rezepte
Im Oktober wird verschärft gekocht

Re: UPDATE oder INSERT

am 17.01.2006 00:34:58 von Timo Kissing

Es war einmal ein Posting von Konni Scheller mit dem Text:

> Hallo,

Hallo Konni.

> gibt es eine einfache Möglichkeit, einen Datensatz zu aktualisieren und
> bei nicht-Vorhandensein neu anzulegen?
>
> Mir scheint, ich muss das in zwei SQL-Statements unterbringen, und das
> ist reichlich ineffektiv (also erst ein SELECT und dann entscheiden, ob
> INSERT oder UPDATE). Gibts da wirklich keine andere, elegantere Methode?

Ich glaube du suchst "INSERT ... ON DUPLICATE KEY UPDATE":

| If you specify ON DUPLICATE KEY UPDATE (added in MySQL 4.1.0), and a row
| is inserted that would cause a duplicate value in a UNIQUE index or
| PRIMARY KEY, an UPDATE of the old row is performed.



HTH,
lino.
--
°° Oberster Verteidiger des Ordens der Dunklen Seite von de.ALL [tm] °°
I haven't got all day, you know.
[ The way of Mrs Marietta Cosmopolite, 3 Quirm Street, Ankh-Morpork, ]
[ Rooms for Rent, Very Reasonable. ]

Re: UPDATE oder INSERT

am 17.01.2006 01:00:40 von kscheller

Timo Kissing <2006-01@ranta.info> wrote:

> Ich glaube du suchst "INSERT ... ON DUPLICATE KEY UPDATE":

Genau - danke!

> HTH, lino.

Schön, dich mal zu lesen.

Servus,
Konni
--
http://www.scharfe-wochen.de/ - Meerrettichspezialitäten und Rezepte
Im Oktober wird verschärft gekocht

Re: UPDATE oder INSERT

am 17.01.2006 01:05:51 von Jan Rademacher

eine andere einfach Möglichkeit:

mysql_query("UPDATE ...");
$anzahl=mysql_affected_rows();
if($anzahl=0) $ins=mysql_query("INSERT ...");

(ausm kopf - also keine 100% für den Syntax ;) )
--
Jan Rademacher

http://www.lockerbleiben.net

Re: UPDATE oder INSERT

am 17.01.2006 08:22:41 von kscheller

Timo Kissing <2006-01@ranta.info> wrote:

>

Wie ich gerade sehe, geht das erst ab Version 4.1.

Servus,
Konni
--
http://www.scharfe-wochen.de/ - Meerrettichspezialitäten und Rezepte
Im Oktober wird verschärft gekocht

Re: UPDATE oder INSERT

am 17.01.2006 09:03:32 von Gregor Hermens

Hallo Konni,

Konni Scheller wrote:

> gibt es eine einfache Möglichkeit, einen Datensatz zu aktualisieren und
> bei nicht-Vorhandensein neu anzulegen?

REPLACE http://dev.mysql.com/doc/refman/4.1/en/replace.html

Alternativ INSERT IGNORE, dann bleibt der bereits vorhandene Datensatz
erhalten: http://dev.mysql.com/doc/refman/4.1/en/insert.html

hth
Gregor

Re: UPDATE oder INSERT

am 17.01.2006 09:05:01 von Christian Kirsch

Konni Scheller wrote:
> Timo Kissing <2006-01@ranta.info> wrote:
>
>
>>
>
>

Nach Deinem Posting hätte ich eher auf REPLACE INTO getippt. Und das
sollte AFAIK auch schon mit 4.0 gehen.

HTH

Re: UPDATE oder INSERT

am 17.01.2006 11:42:48 von kscheller

Hallo Christian,

Christian Kirsch wrote:

> Nach Deinem Posting hätte ich eher auf REPLACE INTO getippt. Und das
> sollte AFAIK auch schon mit 4.0 gehen.

Exakt, das ist es. Allerdings hat mein Provider noch ein 3.x laufen und
ich möchte ihn nicht zusätzlich in Stress versetzen.

Ich muss wohl nach CSS, HTML und PHP Spezifikationen auch noch das
MySQL-"Telefonbuch" durchlesen ;)

Vielen Dank.

Servus,
Konni

--
http://www.scharfe-wochen.de/ - Meerrettichspezialitäten und Rezepte
Im Oktober wird verschärft gekocht

Re: UPDATE oder INSERT

am 17.01.2006 11:51:28 von Helmut Chang

Konni Scheller schrieb:

>>Nach Deinem Posting hätte ich eher auf REPLACE INTO getippt. Und das
>>sollte AFAIK auch schon mit 4.0 gehen.
>
>
> Exakt, das ist es. Allerdings hat mein Provider noch ein 3.x laufen und
> ich möchte ihn nicht zusätzlich in Stress versetzen.

REPLACE INTO ging bereits mit mindestens 3.23.

gruss, heli

Re: UPDATE oder INSERT

am 17.01.2006 11:55:32 von Christian Kirsch

Konni Scheller schrieb:

> Ich muss wohl nach CSS, HTML und PHP Spezifikationen auch noch das
> MySQL-"Telefonbuch" durchlesen ;)
>

Ja. Oder den Kofler dazu. Oder einen Dienstleister beauftragen. Zu der
'Alternative' Framemaker möchte ich Dir jedenfalls nicht raten
(abgesehen davon, dass Du dafür kaum einen Provider finden wirst).