[DB2] Zyklen erkennen/verhindern

hallo,

ich habe eine Tabelle die folgendermaßen aussieht:

CREATE TABLE element (
 id INT NOT NULL PRIMARY KEY GENERATED ALWAYS AS IDENTITY,
 name VARCHAR(75) NOT NULL,
 vater INT REFERENCES element);

nun kann man damit ja auch zyklen erstellen, z.b. ein element zeigt auf sich selbst, oder eben auch über beliebig viele zwischenelemente…

den 1. und damit auch einfachsten fall könnte man ja mit hilfe einer check-klausel abfangen. das problem sind eben die beliebig großen zyklen…

rekursive tabellenabfragen kenne ich schon (siehe „Bill of materials“-Beispiel, zu finden bei der beschreibung des select-statement’s).

die frage ist jetzt ob man einen trigger (AFTER UPDATE) erstellen soll, der mit hilfe der rekursion feststellt ob ein zyklus entstanden ist, oder nicht.

wird das vielleicht bei mehreren dutzend elementen dann ZU rechenintensiv? gibt es vielleicht ein statement mit dem man zyklenfreiheit definieren/erzwingen kann? hab dazu leider (noch) nichts gefunden…

mfg, micha

Hallo!
Zuerst: ich glaub nicht, dass es ein statement wie du es suchst gibt.
Warum probierst du deine Lösung mit einem Trigger nicht einfach mal aus? Was anderes fällt mir auch nicht ein. Etwas Rechenaufwand wird es bestimmt benötigen. Kommt natürlich auch auf Tabellengösse und DBMS an!

Gruss
Dirk

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]