Zum Inhalt springen

mySQL - Trigger? Procedure? hmmm


 Teilen

Empfohlene Beiträge

Hi,

 

Nachdem das bei mir alles bald 10 Jahre her ist und ich überhaupt nie was damit wirklich gemacht habe, außer im Studium zum Spaß, frage ich die Experten im Bikeboard. :)

 

Ich habe scn vor Längerem für meine Wetterstation eine Datenbank gemacht, wo ich minütlich Daten hinein schreibe. Nun habe ich einen Sensor, der mir einen bestimmten Wert liefert (einen Helligkeitswert).

 

Beim Insert (und auch beim Update) eines Datensatzes, soll nun geprüft werden wie hoch der einzufügende Wert ist. Ist er zB größer gleich 50, soll in einer zusätzlichen Spalte 1 stehen, ansonsten 0. 1 bedeutet in dem Fall, dass die Sonne scheint, 0 das Gegenteil. So könnte ich sehr einfach über das Aufsummieren der 1er die Sonnenminuten/Stunden eines Zeitraums berechnen.

 

Wie macht man denn heutzutage so etwas richtig? Ich will den Wert definitiv erst beim Einfügen in die Tabelle errechnen und nicht schon mit übergeben.

 

Oder soll ich mir eine View erstellen? Das hab ich aber überhaupt noch nie gemacht... :)

 

Danke :)

Link zu diesem Kommentar
Auf anderen Seiten teilen

Servus,

 

wenn du dir die frei verfügbare MySQL Workbench anlachst (download from: https://www.mysql.de/products/workbench/ and install), erstellst dir eine DB-Connection, verbindest dich auf die DB, wählst die Tabelle aus, Rechtsklick Alter Table.

 

Dann im Tab "Trigger" und baust dir einen -- Before Insert Trigger zusammen.

 

Welche MySQL Server Version hastn?

Für 5.7 (aktuellste) findest du die Anleitung hier: https://dev.mysql.com/doc/refman/5.7/en/trigger-syntax.html

Bspw. für 5.5 einfach die Version in der Url ändern: https://dev.mysql.com/doc/refman/5.5/en/trigger-syntax.html

 

5.6, 5.1, 5.0

 

Ein Beispiel, wie's gehen könnte:

http://stackoverflow.com/questions/12836270/mysql-trigger-before-insert-value-checking

 

 

CREATE TRIGGER myTrigger BEFORE INSERT ON table

FOR EACH ROW BEGIN

IF (NEW.value > 50)

INSERT INTO table SET additionalvalue ="1";

END IF;

END

 

Sollte so irgendwie machbar sein...

Link zu diesem Kommentar
Auf anderen Seiten teilen

Hallo,

 

Also ich würds mit if/else procedure im mySQL machen (wenn ich deine Aufgabenstellung richtig verstanden habe) siehe hier

allerdings würd ich sowas nicht direkt im mySQL machen.

 

Ich möchte es quasi direkt in MySQL machen, weil ich den Text String den mir die Wetterstation ausgibt nicht zu sehr vorab bearbeiten will. Das bedeutet alles Rechenleistung direkt am Raspberry, der eh schon recht viel zu tun hat mit Backup, Webcam, usw usf. Insofern ist es mir lieber, wenn ich die Daten weiterhin einfach als CSV zum Server schicke und ich dort den Rest mache. Natürlich könnte iches auch dort mit PHP machen, aber da bin ich noch dümmer. Ich kann PHP nicht wirklich, bzw. Nur ein bisserl und zum Debuggen hab ich da einfach nix ordentliches.

Link zu diesem Kommentar
Auf anderen Seiten teilen

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

 Teilen

×
×
  • Neu erstellen...