Webstatt.org - Community seit 2006 - 2012 (2024?)

IF Abfrage im MySQL Query

Avatar user-287
10.02.2008 11:00

Ich hab folgende Abfrage:


IF (SELECT count(*) FROM `cache` WHERE `id` = '".$id."' AND `group` = '".$group."' GROUP BY `id`) = 1
THEN
UPDATE `cache`
SET `data` = '".$cacheData."', `lastmodified` = ".time()."
WHERE `id` = '".$id."' AND `group` = '".$group."'
ELSE
INSERT `cache` (id, data, group, lastmodified)
VALUES('".$id."', '".$cacheData."', '".$group."',".time()."zwinkern


Aber da ist ein Syntaxfehler, nur ich finde ihn nicht.
Der Query soll, wenn bereits eine Zeile existiert mit der gleichen id und group die Zeile updaten, sonst eine neue erstellen.

Avatar user-287
10.02.2008 13:05

Habs nun so gelöst:

Die Spalte id beinhaltet nun den $id.".".$group und ist unique, dadurch kann ich REPLACE INTO verwenden:

REPLACE INTO `cache` (`id`, `data`, `group`, `lastmodified`) VALUES('".$id.".".$group."', '".$cacheData."', '".$group."', ".time()."zwinkern

Avatar user-159
10.02.2008 15:14

Die Funktion von REPLACE INTO ist dann also bearbeiten von unique einträgen, sind diese nicht vorhanden wird ein neuer angelegt?

Avatar user-287
10.02.2008 17:28

jo genau

Avatar user-253
11.02.2008 11:39

Man muss allerdings anmerken, dass bei der Aktualisierung eines vorhandenen Eintrages auf jeden Fall eine neue ID vergeben wird

Insbesondere bei auf IDs basierenden Zuordnungen kann dies leider leicht zu Problemen führen.