Einzelnen Beitrag anzeigen

Medium

Registriert seit: 23. Jan 2008
3.679 Beiträge
 
Delphi 2007 Enterprise
 
#1

[MariaDB] Update-Trigger der die selbe Tabelle updaten soll

  Alt 30. Jul 2020, 16:15
Datenbank: MariaDB • Version: 10.? • Zugriff über: UniDAC
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)
  Mit Zitat antworten Zitat