Forum: PC-Programmierung Trigger in Mysql


von Msp 4. (msp430_crew)


Lesenswert?

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

von Emperor_L0ser (Gast)


Lesenswert?

moin,
also dein erster denkfehler liegt im board, was hat das ganze mit 
mikrocontrollern und elektronik zu tun?

von Clifford (Gast)


Lesenswert?

Innerhalb von Triggern kann man nicht mit SELECT, INSERT, UPDATE usw 
nicht auf die Datenbank zugreifen

von F. K. (freddy436)


Lesenswert?

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

von Msp 4. (msp430_crew)


Lesenswert?

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

von Johannes P. (jope)


Lesenswert?


von F. K. (freddy436)


Lesenswert?

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.

von Msp 4. (msp430_crew)


Lesenswert?

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

von Msp 4. (msp430_crew)


Lesenswert?

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...

von F. K. (freddy436)


Lesenswert?

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.

von Msp 4. (msp430_crew)


Lesenswert?

@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)

von F. K. (freddy436)


Lesenswert?

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 ;)

von Msp 4. (msp430_crew)


Lesenswert?

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
Noch kein Account? Hier anmelden.