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

  • Arne Drews
    hat ein Thema erstellt [Erledigt] MySQL auf Triggernamen beziehen.

    [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

  • Arne Drews
    antwortet
    Ok, sieht auch nicht verkehrt aus.
    Danke!

    Einen Kommentar schreiben:


  • akretschmer
    antwortet
    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/

    Einen Kommentar schreiben:


  • akretschmer
    antwortet
    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

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    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

    Einen Kommentar schreiben:


  • akretschmer
    antwortet
    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)

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    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.

    Einen Kommentar schreiben:


  • erc
    antwortet
    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.

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    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.

    Einen Kommentar schreiben:


  • akretschmer
    antwortet
    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.

    Einen Kommentar schreiben:


  • erc
    antwortet
    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.

    Einen Kommentar schreiben:


  • Arne Drews
    antwortet
    Das hab ich befürchtet, danke Andreas!

    Einen Kommentar schreiben:


  • akretschmer
    antwortet
    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

    Einen Kommentar schreiben:

Lädt...
X