Announcement

Collapse
No announcement yet.

FB 1.5 Events

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

  • FB 1.5 Events

    Hallo,

    ich möchte gerne in meiner Anwendung Events der Datenbank abfangen, d.h. möchte mitkriegen, wenn z.B. eine Datensatz einer Tabelle gelöscht oder eingefügt wurde.

    Es ist mir bekannt, dass ich in einem Trigger einer Tabelle mit POST_EVENT ein Event feuern kann, welches ich dann mit meinen IBX-Komponenten abfangen kann. Jedoch möchte ich nicht für jede Tabelle diesen Trigger neu schreiben.

    Gibt es eine Möglichkeit, z.B. einen Trigger für alle Tabellen zu schreiben und dann im Trigger festzustellen, welche Tabelle betroffen ist? ... oder wird so ein Event von FireBird schon zur Verfügung gestellt.

    Vielen Dank, Hans.

  • #2
    Hallo Hans,
    es gibt keine Möglichkeit einen Trigger für alle Tabellen zu schreiben. Schreiben eines Triggers für jede Tabelle sehe ich auch nicht wirklich als Problem, da sich das mit Sicherheit sehr gut automatisieren lassen würde. Das Problem ist eher, wenn Du wissen willst, welche Tabelle sich geändert hat, dass Du dann für jede Tabelle einen eigenen Eventnamen benötigst, der dann in der Client-Anwendung abgefangen wird. Gut vielleicht auch nicht wirklich ein Problem, allerdings etwas mühsam, und es könnte durchaus auch sein, dass Du mehrere Event-Komponenten benötigst, da eine Event-Komponente nur eine bestimmte Anzahl an Events verwalten kann.
    <br>
    Thoma
    Thomas Steinmaurer

    Firebird Foundation Committee Member
    Upscene Productions - Database Tools for Developers
    Mein Blog

    Comment


    • #3
      Hallo Thomas,

      vielen Dank für die Antwort. Das mit dem Tabellennamen krieg ich über den Eventnamen schon hin.
      Schlimmer scheint zu sein, dass die Event-Komponenten eine begrenzte Anzahl Events abfangen können. Wie hoch ist diese Anzahl ungefähr, damit ich hier Problemen von vorneherein aus dem Weg gehe?

      Hans

      Comment


      • #4
        Hallo Hans,
        ich weiß nicht sicher in Bezug auf IBX, aber ein Limit war einmal bei 15 oder 16 Events pro TIBEvent Komponente.
        <br>
        Thoma
        Thomas Steinmaurer

        Firebird Foundation Committee Member
        Upscene Productions - Database Tools for Developers
        Mein Blog

        Comment


        • #5
          Aus der Hilfe von IBObjects:
          "
          To use this component fill in the Events property with the names of the events for which a registered interest exists. Each IB_Events component can handle only 16 event names. This is an InterBase limitation.
          "

          Gruß
          Gerhard

          P.S. Auch wenn der Einsatz von Events sehr verlockend ist, sollte er gut geplant werden. Wenn es sehr viele Änderungen in kurzen Zeitabständen gibt, kann dieses ein wahres Feuerwek von Events auslösen, welche natürlich auf der clientseite Aktionen auf der DB auslösen (Selects o.a

          Comment


          • #6
            Hallo Hans,<p>

            abhilfe könnte eine eigene Tabelle auf em Server sein, in die die Trigger bei Änderungen den Tabellennamen (oder eigene Tabellen-Id) + die Id des Datensatzes + die Art des Vorganges (Neu,Geändert, Gelöscht) schreiben.
            Auf diese Tabelle setzt du dein Event auf.<p>
            Problem ist aber trotzdem die Netzlast von Events.<br>
            Ich würde in den Tabellen-Triggern auf jeden Fall einen Filter setzen (über Generator einfach zu lösen), der nur dann feuert, wenn du es willst.
            <p>
            Damit kannst du einzelne Tabellen ausschliesen.
            <p>
            Heik

            Comment


            • #7
              @Heiko
              Auf die Idee mit der Tabelle auf dem Server bin ich auch schon gekommen. Ich denke auch, dass ich in dieser Richtung weiterarbeiten werden.
              .
              @Gerhard
              Die Events werden vom mir mit aller Vorsicht eingesetzt, da es sich bei den zu überwachenden Tabellen um reine Stammdatentabellen handelt, welche im laufenden Betrieb nur sehr selten geändert werden. Werden diese jedoch geändert, so kann man durch die Events sauber darauf reagieren.
              .
              Vielen Dank Euch allen, Hans

              Comment

              Working...
              X