Seite 1 von 1

Spalten summieren nach Insert

Verfasst: Do, 30. Mär 2023 15:10
von Manfred
folgendes Szenario

Code: Alles auswählen

INSERT INTO monatsabschluss (monatsstunden,freizeit,urlaub,krank,sonntagszuschlag) VALUES(1,1,1,1,1)
gleichzeitig soll aber auch eine Summe auf die Felder gebildet und die dann ins Feld Quersumme eingetragen werden. Das hätte ich aber gerne automatisiert. Also wäre doch ein Trigger der direkt nach einem Insert feuert, hierfür genau das richtige, oder? Aber wie müßte der aussehen?

Re: Spalten summieren nach Insert

Verfasst: Do, 30. Mär 2023 16:37
von nightcrawler

Code: Alles auswählen

create trigger trig_ins on monatsabschluss after insert
begin
  update monatsabschluss set quersumme=(monatsstunden + freizeit + urlaub + krank + sonntagszuschlag)
  where rowid = ::stmt.TrigRowid
end;
evtl NULL-Werte noch richtig behandeln: COALESCE(monatsstunden,0)

//Edit: hatte Durchschnitt, nicht Quersumme berechnet.

Re: Spalten summieren nach Insert

Verfasst: Do, 30. Mär 2023 20:37
von UliTs
Falls die Daten später durch ein Update verändert werden sollten, kann man auch einen entsprechenden Update-Trigger generieren.
Aber warum gibt es das "Quersumme"-Feld überhaupt? Wäre es nicht viel besser, darauf zu verzichten und statt des Befehls

Code: Alles auswählen

select * from monatsabschluss
den Befehl

Code: Alles auswählen

select *,monatsstunden + freizeit + urlaub + krank + sonntagszuschlag Quersumme from monatsabschluss
zu verwenden?

Re: Spalten summieren nach Insert

Verfasst: Fr, 31. Mär 2023 7:05
von Manfred
Hi Uli,
an wen ist die Frage gerichtet?
Die Bezeichnung Quersumme ist etwas falsch ausgedrückt. Eigentlich ist es ja nur eine Summenbildung der anderen Spalten. Dieser Satz würde nie wieder geändert werden. Aber genau so, wie Joachim es geschrieben hat klappt es und sollte es ausreichen für meine Zwcke.

Re: Spalten summieren nach Insert

Verfasst: Fr, 31. Mär 2023 11:55
von UliTs
Die Frage war natürlich an Dich gerichtet 8) .