Announcement

Collapse
No announcement yet.

Trigger auf n Tabellen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Trigger auf n Tabellen

    Hi,
    mein Problem ist, daß ich auf die Änderung von verschiedenen Tabellen reagieren muß. Die Reaktion ist immer gleich. Es können sich n von m möglichen Tabellen ändern (Insert, Update, Delete). Ich denötig also etwas wie ein Tabellen übergreifenden Trigger. Ist so etwas mit einem Trigger aus eine View möglich? Einzelne Trigger nutzen leider wenig, da nur einmal auch auf eine quasi parallele Änderung der Tabellen reagiert werden soll. Kann jmand helfen?
    Besten Dank im vorraus

  • #2
    Wenn du darunter verstehst, du hast eine View, deren Daten aus verschiedenen Tabellen kommen oder auch berechnet werden und du machst ein Insert/Update/Delete auf diese View und willst das aber abfangen und selber verwalten, dann wäre ein INSTEAD-OF-Trigger auf der View genau richtig:
    http://www.databasejournal.com/features/mssql/article.php/1437741<br>
    bye, Helmu

    Comment


    • #3
      Ich glaube das trifft es nicht ganz.
      Es werden von einem weiteren User Veränderungen vorgenommen. Diese will ich nur detektieren und darauf mit einer Funktionalität reagieren, die alle Daten aller betrachteten Tabellen verarbeitet. Dafür scheint eine View nicht so ganz geeignet oder

      Comment


      • #4
        Irgendwie verstehe ich das noch immer nicht. Kannst du mal etwas konkreter werden? Zb ein schönes Beispiel mit einer Kundentabelle einer Auftragstabelle und einer Rechnungstabelle und was passiert, wenn du etwas änderst und was passiert beim "weiteren User" und wie kennt man die auseinander ... :-

        Comment


        • #5
          Lagere den Code doch in ne SP aus und rufe diese von den Triggern auf

          Comment


          • #6
            Erst einmal Danke für die schnellen Antworten.
            Also noch mal langsam:
            Es existiert ein User, der die Daten in verschiedene Importabellen ablegt, z.B. in eine Kundentabelle, eine Auftragstabelle und eine Rechnungstabelle. Die letzten hinzugefügten Datensätze enthalten einen Kenner, daß das Datenpaket komplett ist.
            Mein Begehr ist es mit Hilfe eines Triggers o.ä. und einer SP zu erkennen, daß jetzt die neuen Daten konsitent sind und weiter verarbeitet werden können. Es hilft leider nicht nur eine Tabelle zu überwachen, da nicht alle Tabellen geändert werden müssen. Ich brauche also ein Konstrukt, welches in der Lage ist mehere Tabellen zu überwachen und bei einer Änderung in minimal einer aktiv zu werden. Ich hoffe die Erläuterung hilft

            Comment


            • #7
              Schön langsam denke ich erkennen zu können, was du meinst. Der springende Punkt dabei ist für mich: kann mir dieser User bzw. das Programm irgendwie mitteilen, dass die Transaktion beendet ist? Wenn ja, dann einfach eine eine stored Proc aufrufen, die den Rest erledigt.
              Ist dies nicht der Fall, dann muß ich wohl irgendwie eine Info kriegen, wann sich in welchen Tabellen was geändert hat und nach einer gewissen Zeitspanne darauf reagieren. Also - ich habe eine neue Tabelle, in der werden zB Tabellenname, Record_ID und Zeit eingetragen. Wenn nun in irgendeiner der beteiligten Tabellen etwas passiert, dann hängt da ein Trigger daran, der einen entsprechenden Eintrag in dieser Tabelle vornimmt, sonst nichts. Weiters habe ich einen Job am laufen, der alle Minuten nachschaut, welche Einträge da drinnen stehen. Gibt es Einträge, die mindestens 10 Sekunden (oder wie auch immer) alt sind, dann gilt die Aktion als abgeschlossen, ich mache ich anhand der Info meine entsprechenden Aktionen und lösche die Info aus dieser Tabelle.
              Kann ich mir das Warten nicht leisten und kenne aber auch den Zeitpunkt des Fertigwerdens nicht, dann ... fällt mir jetzt gerade auch nichts dazu ein :-(<br>
              bye, Helmu

              Comment


              • #8
                Deine zweite Variante ist anscheined das Mittel der Wahl, da von außen kein explizietes "Ich bin fertig" verfügbar ist. Das Warten ist kein Problem, daher ist diese Lösung möglich. Leider ist der Aufwand (n Trigger und zusätzliche Tabelle und Job) doch deutlich höher als erwartet. Aber wie so oft bedeutet eine kurze Formulierung der Aufgabe nicht eine ebenso "kurze" Umsetzung.
                Nochmal Danke für den Tip, er hat sehr weiter geholfen. ;o

                Comment

                Working...
                X