![]() |
Datenbank: MySQL • Version: 5 • Zugriff über: unabhängig davon (ZEOS)
MySQL: Trigger After Update, Parameterübergabe
Hallo liebe Gemeinde!
Ich konnte leider keine passende Antwort auf meine Frage finden. Sicherlich ist schon die richtige Begrifflichkeit die erste Hürde :) (wie so immer beim Suchen). Ich möchte gerne bei meiner Applikation Feldänderungen innerhalb der DB (MySQL 5, InnoDB) mithilfe eines Triggers "dokumentieren". Dies stellt grundsätzlich kein Problem dar. Ich werde dies nach folgendem Schema realisieren:
Code:
Nun zur Frage: Ich möchte gerne die auslösenden User dazu abspeichern. Ich verwende aber keine unterschiedlichen MySQL-User (dann wäre das Problem schnell gelöst) für den DB-Zugriff. Mein Programm hat eine eigene Benztzerverwaltung. D.h ich muss irgendwie in den Trigger-Insert-Befehl die User-ID mit eintragen.
CREATE TRIGGER trigger_changes
AFTER UPDATE ON tab1_aktuell FOR EACH ROW INSERT INTO tab2_historie ( ID, daten 1, daten2, date_modified) VALUES (OLD.ID, OLD.daten, OLD.daten2, NOW()); Nur mal so als Skizze:
Code:
Das Feld [UserID] stellt dann den einzutragenen Wert dar.
CREATE TRIGGER trigger_changes
AFTER UPDATE ON tab1_aktuell FOR EACH ROW INSERT INTO tab2_historie ( ID, daten 1, daten2, date_modified) VALUES (OLD.ID, OLD.daten, OLD.daten2, NOW(),[UserID]); Anmerkung: Ich habe leider keine Möglichkeit bzw. möchte ich Nachprogrammierungen verhindern, bei dem ich den User im Update-Befehl übergebe("OLD.UserID"). Hat jemand eine Idee? Gruß in die Runde:) |
AW: MySQL: Trigger After Update, Parameterübergabe
Äh, welche "User-ID" soll der denn ausgeben, wenn Du keine verwendest?
|
AW: MySQL: Trigger After Update, Parameterübergabe
Sieht nach ShIShO aus .... wenn MySQL - Sessions kennt, kannst Du gegf. (dirty) über eine Hilfstabelle die Session mit dem User verbundeln.
|
AW: MySQL: Trigger After Update, Parameterübergabe
Zitat:
Obwohl jetzt wo ich diese Worte tippe, kommt mir eine Assoziation.. So ähnlich wie fifo nur schlimmer?! P.S.: Selbst wenn es mit session infos geht. Nur wenn man annimmt, dass der TE mit einem FAT Client arbeitet, statt mit einem App Server bspw. würde ein halbwegs sinnvoller User dabei rumkommen. |
AW: MySQL: Trigger After Update, Parameterübergabe
genau ... ;-)
|
AW: MySQL: Trigger After Update, Parameterübergabe
Das wäre ein schöner Eintrag für die DP Hints und so User wie mich, die irgendwo hinterm Mond ...
:) |
AW: MySQL: Trigger After Update, Parameterübergabe
Zu Frage, wo die USER-ID herkommt:
@Jobo: Wie schon beschrieben, verwalte ich innerhalb der App die User in der DB selbst. D.h. es gibt eine Usertabelle (PRIMKEY wäre dann die User-ID), die die Benutzer speichert. Hat nichts mit den MySQL-User zu tun. Also MySQL arbeitet meiner Meinung schon mit Sessions (Verbindungssession). Ich hätte gedacht, dass man irgendwie den Triggerbefehl einen Parameter übergeben. Denn zum Zeitpunkt des Update-befehl liegt mir ja die User-ID vor. Schade :( :( und nochmal schade. Hatte gehofft, dass dies irgendwie möglich ist. Nun hat es mich doch "getroffen" :snowball: .... also nachprogrammieren :( |
AW: MySQL: Trigger After Update, Parameterübergabe
Wenn es eine Session-ID gibt kannst Du diese ja in der Usertabelle zum passenden User eintragen und im Trigger für das entsprechende Feld ein Subselect (Select User_ID from xx where Session_ID=@Session_ID) fahren, keine Ahnung ob/wie genau das unter MySQL funktionieren kann, unter MSSQL könnte man auf die Art versuchen etwas zu retten ...
|
AW: MySQL: Trigger After Update, Parameterübergabe
Verstehe deinen Vorschlag, aber leider steht meine User-ID in keinem Zusammenhang mit der Session-ID. Jeder Verbindungsaufbau gilt als eigene abgeschlossene Session.
Trotzdem danke. Ich überlege, um einiges an Programmierarbeit zu sparen, eben doch jedem User aus meiner Sicht, mit einem mySQL-DB-User zu koppeln. Mal schaun, ob das praktikabel ist. :thumb: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:15 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz