HalLo Leute, ich möchte in Mysql einen Trigger einrichten, der bei einem neuen Eintrag in die DB, jeden Wert dieser Zeile durch 10 teilt und dann die Spalten wieder mit den Wert/10 füllt. Ich habe hier mal einen Ansatz: TRIGGER Testtrigger AFTER INSERT ON wetterdaten FOR EACH ROW BEGIN UPDATE wetterdaten SET `Lufttemperatur` = `Lufttemperatur`/10 WHERE (ID = MAX(ID)); END Wo liegt denn mein Denkfehler? Peter
moin, also dein erster denkfehler liegt im board, was hat das ganze mit mikrocontrollern und elektronik zu tun?
Innerhalb von Triggern kann man nicht mit SELECT, INSERT, UPDATE usw nicht auf die Datenbank zugreifen
So wie ich dich verstehe soll nur der neue Eintrag geändert werden, dann halte ich das hier für besser: CREATE TRIGGER Testtrigger BEFORE INSERT ON wetterdaten FOR EACH ROW SET new.Lufttemperatur = new.Lufttemperatur / 10
Hallo freddy436, ja das habe ich gesucht. Danke Dir. Eine Frage habe ich aber noch, woher weiß man sowas? Ich habe gestern nur sehr wenig dazu gefunden und habe bestimmt 5h gegoogelt! Kannst Du mir vielleicht ne gute Seite dazu nennen oder ne Buchempfehlung? Wünsche ein schönes Wochenende. Peter
In meinen Augen reicht die offizielle MySQL Referenz/Dokumentation völlig aus, mehr habe ich eigentlich nie gebraucht. Ich habe nie ein Buch oder ähnliches über SQL gelesen. Ich fange auch erst jetzt mit einem Informatik Studium an. Meine SQL Kenntnisse sind eigentlich alle ein Nebenprodukt des PHP Lernens und einigen Projekten. Ich bin sicherlich kein Profi, würde mich als Fortgeschritten eingestufft. Gerade bei so nicht alltäglichen Sachen gucke ich aber auch immer wieder gerne in die Referenz.
Habe jetzt mal versucht mehrere Spalten zu ändern...aber meine MYSQL Version 5.0.41 unterstützt keine multiple Triggers. In PHP würde ich einfach die verschiedenen Spaltenwerte asulesen, verändern und zurückschreiben mit einem Update Befehl. Aber mit MYSQL tue ich mich schwer. Wie kann man das umgehen? CREATE TRIGGER Testtrigger BEFORE INSERT ON wetterdaten FOR EACH ROW SET new.Lufttemperatur = new.Lufttemperatur / 100; SET new.Luftfeuchte = new.Luftfeuchte / 100; Peter
Hatte versucht den selben Trigger noch mal anzulegen... aber es gibt immer noch Syntax Probleme... Es kann doch nicht so schwer sein, oder verstehe ich noch was falsch? Wer mal das Manual weiter wälzen...
CREATE TRIGGER Testtrigger BEFORE INSERT ON wetterdaten FOR EACH ROW SET new.Lufttemperatur = new.Lufttemperatur / 100, new.Luftfeuchte = new.Luftfeuchte / 100 Wenn du mehrere Statements verwenden willst musst du mit BEGIN/END arbeiten.
@freddy436 Also ich bin jetzt fast am Ziel, leider macht die IF Abfrage Probleme, vielleicht hast Du ja noch eine Idee & Danke für deine Bemühungen :-) CREATE TRIGGER Testtrigger BEFORE INSERT ON wetterdaten FOR EACH ROW SET new.Lufttemperatur = new.Lufttemperatur / 100, @Lufttemp = new.Lufttemperatur, new.Luftfeuchte = new.Luftfeuchte / 100, new.Luftdruck = new.Luftdruck / 100, new.Windgeschwindigkeit = new.Windgeschwindigkeit / 100, @Windgeschw = new.Windgeschwindigkeit, new.Helligkeit = new.Helligkeit / 100, new.Windchill = ROUND(13.12 + 0.6215 * @Lufttemp - 11.37 * POW(@Windgeschw,0.16) + 0.3965 * @Lufttemp * POW(@Windgeschw,0.16),2), IF (@Windgeschw > 5,new.Windchill,new.Windchill = @Lufttemp)
ich vermute mal du suchst das hier: ..., new.Windchill = IF (@Windgeschw > 5,new.Windchill,@Lufttemp) Wenn du mal gezwungen wurdest mit Excel zu arbeiten, das SQL IF kann man mit dem Excel IF/WENN vergleichen ;) Das da sieht für mich danach aus als wenn du von irgendjemand gezwungen wirst das mit TRIGGERN zu machen, liege ich da richtig? Ansonsten würde es vermutlich deutlich mehr Sinn machen das direkt im Client Programm zu machen ;)
Danke nochmal, funzt alles jetzt prima. Mit der wenn /dann Funktion in Excel hatte ich auch schon mal Probleme ;-). Ja, mich zwingt der Apache dazu...ich lese lese über ein shell Script Daten in die DB. Da ich mit Linux sehr wenig zu tun hab, mach ichs lieber mit dem Trigger. Gruß Peter
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.