[GastForen Programmierung/Entwicklung PHP und MySQL

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste

SQL REPLACEoder Alternativen

Pozor
Beiträge gesamt: 892

16. Mär 2004, 07:48
Bewertung:

gelesen: 1027

Beitrag als Lesezeichen
Hallo,

mein Problem ist folgendes:

Ich habe in einer Tabelle diverse Einträge.
Nun möchte ich weitere einfügen, doch möglicherweise sind manche der neuen Eintäge schon in der Tabelle vorhanden und ich möchte keine doppelten Einträge produzieren.

REPLACE (Nach Definition):
REPLACE works exactly like INSERT, except that if an old record in the table has the same value as a new record on a UNIQUE index or PRIMARY KEY, the old record is deleted before the new record is inserted.

In der Tabelle eine id (PRIMARY KEY). Wie kann ich mein Problem mit einer MYSQL Anweisung lösen?

Tabellenstruktur:
id primary int(11) auto_increment
status int(1)
owner int(11)
timestamp timestamp(14)

folgendes funktioniert nicht (wiederholte Ausführung):

$query = "REPLACE tb_test (owner,status) VALUES (1,2)";
$result = mysql_query($query,$link);
if(2 == mysql_affected_rows())
{
echo 'Replace done!';
}else
{
echo 'New insert!';
}

es funktioniert, wenn man die erste Zeile ändert:

$query = "REPLACE tb_test (id,owner,status) VALUES (1,1,2)"; //zusätzlich id (PRIMARY KEY)

Das Problem ist, dass bei einem neuen Eintrag die ID natürlich NICHT manuell gesetzt werden sollte (auto_increment)... Wie kann man das umgehen? jedesmal die nächste einzusezende ID abzufragen? (Aufwand für DB hoch?)


Gruss Pozor

(Dieser Beitrag wurde von Pozor am 16. Mär 2004, 07:56 geändert)
Dieser Beitrag wurde nicht geändert.