Moin!
Ich habe eine Tabelle mit Daten zu Rohstofftanks. Ich möchte nun einen "virtuellen" Tank einfügen, der eine Untergruppe der anderen Tanks als Eins wiederspiegeln soll. Insbesondere den Kombinierten Füllstand. Da wäre an sich ein Trigger ja eine schöne Sache. Leider habe ich das Problem, dass ich den u.s. Trigger zwar erzeugen kann, bei einem UPDATE auf die Tabelle gibt's aber Mecker, weil der Trigger seine eigene Tabelle updaten will. Dass das an sich problematisch ist, leuchtet mir grundsätzlich ein. Durch meinen Code wird zwar sichergestellt, dass es zu keinem Konflikt kommen kann, aber das weiß das
DBMS ja nicht.
Mein Trigger so weit:
SQL-Code:
DELIMITER //
DROP TRIGGER IF EXISTS update_T10;
CREATE TRIGGER update_T10 AFTER UPDATE ON tanks FOR EACH ROW
BEGIN
IF NEW.tank_nr IN (1, 2, 3, 5) THEN
UPDATE tanks
SET inhalt = (
SELECT SUM(inhalt)
FROM tanks
WHERE tank_nr IN (1, 2, 3, 5))
WHERE tank_nr = 10;
END IF;
END; //
DELIMITER ;
T10 soll also die Summe der Inhalte von T1, T2, T3 und T5 bekommen. Ein Update findet also nicht statt, wenn sich der Inhalt von T10 selbst ändert, sodass kein rekursiver Endlosaufruf passieren kann. Kann ich das dem
DBMS irgendwie begreiflich machen? Kann man statt "FOR EACH ROW" vielleicht etwas spezifischer werden?
"When one person suffers from a delusion, it is called insanity. When a million people suffer from a delusion, it is called religion." (Richard Dawkins)