Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

die geänderte Datensatz durch Trigger aktualliseren

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von jetwork, 19 Februar 2015.

  1. jetwork

    jetwork Fleissiger Benutzer

    Hallo Zusammen,


    ich möchte für jeden Rekord in meiner Tabelle die letzte Änderung protokollieren, deswegen habe ich 2 Spalten eingeführt. Die spalten sind last_edited und last_editor.
    Wenn jemand in der Record etwas ändert möchte ich in diese Record diese beide Spalten aktuallisieren.

    Ich habe den folgenden Trigger vorbereitet. Wie kann ich das richtig schreiben?
    Code:
    CREATE TRIGGER triggername AFTER UPDATE ON tablename
    FOR EACH ROW
    BEGIN
    IF ??????   THEN
      UPDATE TABLE tablename
      SET last_edited=NOW(), last_editor=CURRENT_USER()  
      WHERE ??????
    END IF
    END;
    
    Danke im Voraus
     
  2. akretschmer

    akretschmer Datenbank-Guru


    Ich nix MySQL, aber in PG würde das in einer endlosen Rekusion enden. Rekusion? siehe Rekursion! (okay, den konnt ich mir nicht verkneifen)

    Also, ich würde da in einem Before-Trigger an new.<SPALTE> arbeiten, nicht nochmals ein UPDATE im TRIGGER aufrufen. Weil: siehe oben, Rekursion und so...
     
  3. Distrilec

    Distrilec Datenbank-Guru

    Du brauchst einen BEFORE UPDATE-Trigger... Sonst gibt es eine Endlosschleife :)
    In Oracle ginge es so:

    Code:
    CREATE TRIGGER temp_tab_bu BEFORE UPDATE ON temp_tab
    FOR EACH ROW
    BEGIN
       :new.last_edited := systimestamp;
       :new.las_editor  := user;
    END;
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden