robertroth: ON DUPLICATE KEY UPDATE

Beitrag lesen

Liebe Mitdenker, liebe Wissende, liebe Neugierige,

was muß ich tun, damit ich über

insert into tabelle (ID,K_ID,V_ID,...) VALUES ($id,$k_id,$v_id...) ON DUPLICATE KEY UPDATE ...

ein Update anstelle eines Insert erreiche und zwar genau dann, wenn:

  • die Kombination aus V_ID und K_ID nicht mehr "unique" wäre.

Du vermischst da zwei Standard-Trigger/Constraints von MySQL miteinander.

Wenn Du möchtest, dass ein Insert nur funktioniert, wenn ein bestimmter Key noch nicht existiert, muss der zuerst einmal angelegt sein als Unique Key (also über alle betroffenen Spalten).

Und dann führst Du das Insert einfach durch. Wenn der Unique Key über die betroffenen Spalten bereits existiert hat, wird das Insert abgelehnt und eine entsprechende MySQL-Error-Message steht zur Verfügung.

Wenn Dein Ansinnen aber nur zeilenweise vorkommen sollte (also nicht generell für die Tabelle gilt), dann hilft Dir eine stored Routine, die per Funktionsargument die passende Anweisung entgegen nimmt.

Spirituelle Grüße
Euer Robert
robert.r@online.de

--
Möge der wahre Forumsgeist ewig leben!