Ankündigung

Einklappen
Keine Ankündigung bisher.

[Erledigt] MySQL auf Triggernamen beziehen

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [Erledigt] MySQL auf Triggernamen beziehen

    Moin,

    Ich logge bestimmte Aktionen in der DB in einer Tabelle mit.
    Dazu verwende ich Trigger, da die Log-Daten relativ klein sind.

    Nun möchte ich gerne die Trigger-Anweisungen so ungebunden, wie möglich machen.
    Verständlich wird dies evtl. mit dem Hinweis, daß ich in den Logs den Trigger-Namen reinschreibe, der den Datensatz erzeugt hat.

    Dazu würde ich gerne in der Trigger-Anweisung auf so etwas, wie TRIGGER.NAME zurückgreifen.
    Ich befürchte zwar, da das bei MySQL nicht geht, aber vielleicht hat ja jemand doch ne Info für mich?!

    Ja, bei diesem Projekt wäre ich sogar bereit auf eine andere DB auszuweichen, wenns nötig ist...

    Danke und Gruß
    Arne
    Competence-Center -> Enjoy the Informatrix
    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages


  • #2
    Zitat von Arne Drews Beitrag anzeigen

    Dazu würde ich gerne in der Trigger-Anweisung auf so etwas, wie TRIGGER.NAME zurückgreifen.
    Ich befürchte zwar, da das bei MySQL nicht geht, aber vielleicht hat ja jemand doch ne Info für mich?!

    Ja, bei diesem Projekt wäre ich sogar bereit auf eine andere DB auszuweichen, wenns nötig ist...
    http://www.postgresql.org/docs/9.3/s...l-trigger.html, TG_NAME.

    Viel Spaß mit PG
    PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

    Kommentar


    • #3
      Das hab ich befürchtet, danke Andreas!
      Competence-Center -> Enjoy the Informatrix
      PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

      Kommentar


      • #4
        Warum? Es spricht doch nix dagegen den Namen im Trigger zu hinterlegen!? Mit Mysql kannst du den Trigger doch so oder so nicht wieder verwenden.

        Kommentar


        • #5
          Zitat von erc Beitrag anzeigen
          Mit Mysql kannst du den Trigger doch so oder so nicht wieder verwenden.
          Das macht es aber auch nicht besser jetzt.
          PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

          Kommentar


          • #6
            Also eigentlich gehts mir um die allgemeine Administration.
            Ich lege Trigger auf mehrere Tabellen an und möchte einfach nur nicht bei jedem Trigger so viel anpassen müssen.

            Wie gesagt, der Trigger-Name soll in die logs mit eingetragen werden.
            Wenn ich jetzt den Trigger-Namen im Trigger definiere, kann ich im Statement auch gleich den Trigger-Namen angeben.

            Oder meintest Du das anders, erc?


            Vielleicht zur besseren Info:
            Ich habe bspw. 5 Tabellen, die alle über einen Trigger Datensätze in eine Log-Tabelle schreiben.
            In der Log-Tabelle speichere ich auch den Trigger-Name, der den Datensatz erzeugt hat.
            Um jetzt die einzelnen Trigger nicht immer manuell anpassen zu müssen, hatte ich gehofft, es gäbe ein Pendant in MySQL zu TG_NAME in PG, wie Andreas ja netterweise gezeigt hat.
            Competence-Center -> Enjoy the Informatrix
            PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

            Kommentar


            • #7
              Zitat von Arne Drews Beitrag anzeigen
              Wenn ich jetzt den Trigger-Namen im Trigger definiere, kann ich im Statement auch gleich den Trigger-Namen angeben.
              Das mein ich damit auch. Du kommst doch gar nicht drum rum für jede Tabelle ein eigenständigen Trigger zu erstellen.

              Kommentar


              • #8
                Das ist natürlich richtig, aber es sind weitaus mehr, als die beispielhaft angegebenen 5 Tabellen, die mit einem Trigger versehen werden sollen.
                Die Trigger machen aber im Prinzip nahezu dasselbe.

                Trigger-Beispiel (aufs wesentliche begrenzt):
                Code:
                BEGIN
                    INSERT INTO `logs` (
                        `created`,
                        `infotext`,
                        `from_trigger`
                    )
                    VALUES (
                        now(),
                        CONCAT( 'logtext', NEW.value ),
                        TRIGGER.NAME
                    )
                END
                ...wenn ich TRIGGER.NAME o.ä. hier verwenden könnte, bräuchte ich nicht jeden Trigger manuell anpassen.
                Darum gehts mir.
                Competence-Center -> Enjoy the Informatrix
                PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                Kommentar


                • #9
                  Zitat von Arne Drews Beitrag anzeigen
                  Das ist natürlich richtig, aber es sind weitaus mehr, als die beispielhaft angegebenen 5 Tabellen, die mit einem Trigger versehen werden sollen.
                  Mit PG könntest Du sogar unterschiedlich aufgebaute Tabellen bzw. Tabellen, deren Struktur sich ändert, mit einem Trigger in eine gemeinsamme Logtabelle die Änderungen loggen, mittels HSTORE. Demo hier: http://www.postgresonline.com/journa...Archiving.html Ich weiß, daß ist offenbar nicht das, was Du willst, bietet aber noch mehr Flexibilität als Du suchst. Nur mal so als Beispiel, weil ich diese Anwendung für HSTORE recht cool finde. Man könnte sicher auch JSON für sowas vergewaltigen, ab 9.4 auch in binärer Speicherung (und bei Bedarf indexbasiert)
                  PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                  Kommentar


                  • #10
                    Ja, gebe ich Dir recht. Aber das wäre für meinen Zweck tatsächlich etwas overloaded.
                    Aber danke für Deine Infos!

                    Kannst Du GUIs empfehlen für PG, ähnlich phpMyAdmin?

                    EDIT
                    Ah... schon gesehen: http://phppgadmin.sourceforge.net/doku.php
                    Competence-Center -> Enjoy the Informatrix
                    PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                    Kommentar


                    • #11
                      Zitat von Arne Drews Beitrag anzeigen
                      Ja, gebe ich Dir recht. Aber das wäre für meinen Zweck tatsächlich etwas overloaded.
                      Aber danke für Deine Infos!

                      Kannst Du GUIs empfehlen für PG, ähnlich phpMyAdmin?

                      EDIT
                      Ah... schon gesehen: http://phppgadmin.sourceforge.net/doku.php
                      PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                      Kommentar


                      • #12
                        Zitat von Arne Drews Beitrag anzeigen
                        Ja, gebe ich Dir recht. Aber das wäre für meinen Zweck tatsächlich etwas overloaded.
                        Aber danke für Deine Infos!

                        Kannst Du GUIs empfehlen für PG, ähnlich phpMyAdmin?

                        EDIT
                        Ah... schon gesehen: http://phppgadmin.sourceforge.net/doku.php
                        ja, neben dem Php-Dingens wird auch gern dies genommen: http://www.pgadmin.org/
                        PostgreSQL Development, 24x7 Support, Remote DBA, Training & Services

                        Kommentar


                        • #13
                          Ok, sieht auch nicht verkehrt aus.
                          Danke!
                          Competence-Center -> Enjoy the Informatrix
                          PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                          Kommentar

                          Lädt...
                          X