Thread Datenbank einträge vergleichen und einfügen: Datenbank einträge vergleichen und einfü (15 answers)
Opened by martin101 at 2006-03-07 16:24

nepos
 2006-03-09 12:26
#34083 #34083
User since
2005-08-17
1420 Artikel
BenutzerIn
[Homepage] [default_avatar]
Also, nachdem ich nicht weiss, welche Datenbank du nutzt, kann ich dir da nicht 100% ein Beispiel geben.
Aber hier mal was aus Postgres:
Code: (dl )
1
2
3
4
5
CREATE TABLE daten (
id serial,
feld1 varchar NOT NULL,
feld2 integer NOT NULL,
changed timestamp DEFAULT 'now()' NOT NULL


So, damit hast du mal eine Tabelle mit ner fortlaufenden ID, 2 Feldern fuer Daten und das besagte Feld mit dem Zeitstempel.
Wenn du nun so Daten einfuegst, dann wird der Zeitstempel immer auf den Zeitpunkt des Einfuegens gesetzt:
Code: (dl )
INSERT INTO daten (feld1,feld2) VALUES('blafaselblubber',1234);


Du willst ja aber vorher pruefen, ob es schon den gleichen Datensatz, der innerhalb der letzten 30 Minuten eingetragen wurde gibt. Also pruefst du das vor dem INSERT:

Code: (dl )
SELECT id FROM daten WHERE feld1='blafaselblubber' AND feld2=1234 AND changed > now() - interval '30 minutes';

Wenn dieser SELECT was zurueckliefert, dann brauchst du den Datensatz nicht einfuegen, da er innerhalb der letzten 30 Minuten schon einmal eingefuegt wurde. Eventuell musst du das fuer deine Datenbank von der SQL-Syntax her etwas anpassen.

Also, nochmal zusammengepackt:
Code (perl): (dl )
1
2
3
4
5
#Pruefen ob Datensatz innerhalb der letzten 30 Minuten eingetragen wurde
unless ( $dbh->selectrow_array(qq{SELECT ... FROM ... WHERE ... AND changed > now() - interveral '30 minutes'})) {
  # ok, nix da, dann INSERT
  $dbh->do(qq{INSERT INTO ... (...) VALUES(...);
}

View full thread Datenbank einträge vergleichen und einfügen: Datenbank einträge vergleichen und einfü