Trigger Mysql Werte berechnen
Patti
- datenbank
Hallo Leute,
ich möchte gerne unter Mysql einen Trigger einrichten der bestimmte Werte die eingetragen werden dannach mit dem 10fachen Wert überschreibt. Geht die dies für jede Spalte?
Danke Euch
ich möchte gerne unter Mysql einen Trigger einrichten der bestimmte Werte die eingetragen werden dannach mit dem 10fachen Wert überschreibt. Geht die dies für jede Spalte?
http://dev.mysql.com/doc/refman/5.1/de/triggers.html
Trigger gibts noch nicht so lange bei MySQL, also auch auf die Version achten, die Dir z.v. steht.
Ansonsten: Trigger würde ich dafür nicht einsetzen.
Was hältst Du von einem UPDATE?
UPDATE
Tabelle
SET
Datenfeld1 = Datenfeld1 * 10,
Datenfeld2 = Datenfeld2 * 5
Danke für deine Hilfe,
mein Problem ist das ich eine text Datei über die Linux Shell verarbeite und in die Datebank schreibe.
Ich wollte per Trigger die neue Zeile *10 nehmen und wieder zurückschreiben...aber ich finde trotz Habuch keinen guten Einstieg...
Patti
CREATE TRIGGER
Testtrigger
AFTER INSERT ON
Tabelle1
FOR EACH ROW BEGIN
UPDATE Tabelle1 SET Datenfeld = Datenfeld * 10 WHERE (<keine Ahnung>)
END
Irgendwie sowas, wie die WHERE-Klausel aussehen muss, weiss ich nicht, eventuell müsstest Du die temporär verfügbare Tabelle NEW referenzieren, aber das blicke ich auch nicht im Moment.
Such doch mit Google einfach weitere Beispiele.
Irgendwie krieg ich das nicht hin...sitz schon seit edlichen Stunden dran...hier mein Stand..
TRIGGER
Testtrigger
AFTER INSERT ON
wetterdaten
FOR EACH ROW BEGIN
UPDATE wetterdaten SET Lufttemperatur
= Lufttemperatur
/10 WHERE (ID
= MAX(ID));
END
TRIGGER
Testtrigger
AFTER INSERT ON
wetterdaten
FOR EACH ROW BEGIN
UPDATE wetterdaten SETLufttemperatur
=Lufttemperatur
/10 WHERE (ID
= MAX(ID));
END
Sieht doch gar nicht so schlecht aus, Fehlermeldung? Oder kein UPDATE nach ISNERT? (Das mit MAX(Id) täte ich mal überdenken. Da gibts sicherlich was Eleganteres.)
Habe jetzt ne Teillösung:
dieser Trigger funzt für eine Spalte:
CREATE TRIGGER Testtrigger
BEFORE INSERT ON wetterdaten
FOR EACH ROW
SET new.Lufttemperatur = new.Lufttemperatur / 100;
aber für mehere Spalten geht es nicht...
CREATE TRIGGER Testtrigger
BEFORE INSERT ON wetterdaten
FOR EACH ROW
SET new.Lufttemperatur = new.Lufttemperatur / 100;
SET new.Luftfeuchte = new.Luftfeuchte / 100;
Warum???
FOR EACH ROW
SET new.Lufttemperatur = new.Lufttemperatur / 100;
SET new.Luftfeuchte = new.Luftfeuchte / 100;
geht sowas:
SET
new.Lufttemperatur = new.Lufttemperatur / 100,
new.Luftfeuchte = new.Luftfeuchte / 100;
?
Das mit dem doppelten Semikolon sieht nicht gut aus, da es ein _Anweisungsende_ bedeuten könnte.
@gonzo
Also ich bin jetzt fast am Ziel ohne die IF ABfrage funzt es schon prima, 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)
IF (@Windgeschw > 5,new.Windchill,new.Windchill = @Lufttemp)
Irgendwie wirds mit IF() wohl auch gehen, aber Du darfst natürlich in Triggern (BEGIN ... END) auch mit Variablen und den Programmflusskontrollelementen (Schleifen, Bedingungen) kommen.
Aber meine Syntax ist doch richtig oder? (vom IF Konstrukt)
echo $begrüßung;
CREATE TRIGGER Testtrigger
BEFORE INSERT ON wetterdaten
FOR EACH ROW
SET new.Lufttemperatur = new.Lufttemperatur / 100,
[...]
IF (@Windgeschw > 5,new.Windchill,new.Windchill = @Lufttemp)
Das Ergebnis der IF-Funktion wird nirgends zugewiesen. Außerdem ist das Ergebnis des Wertes bei nicht erfüllter Bedingung das Ergebnis des Vergleichs new.Windchill = @Lufttemp.
Ich kann mir nicht vorstellen, dass du das so gewollt hast. Formuliere deinen Willen, wenn du möchtest, dass ihn dir jemand in gültige Syntax umsetzt oder dir dafür Hilfe geben soll.
echo "$verabschiedung $name";