Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi MySQL: Trigger After Update, Parameterübergabe (https://www.delphipraxis.net/166726-mysql-trigger-after-update-parameteruebergabe.html)

borncrush 27. Feb 2012 12:16

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:
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());
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.

Nur mal so als Skizze:
Code:
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]);
Das Feld [UserID] stellt dann den einzutragenen Wert dar.

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:)

jobo 27. Feb 2012 12:29

AW: MySQL: Trigger After Update, Parameterübergabe
 
Äh, welche "User-ID" soll der denn ausgeben, wenn Du keine verwendest?

Bummi 27. Feb 2012 12:36

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.

jobo 27. Feb 2012 12:52

AW: MySQL: Trigger After Update, Parameterübergabe
 
Zitat:

Zitat von Bummi (Beitrag 1153125)
Sieht nach ShIShO aus

Sushi kenn ich ja, aber ShIShO ?
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.

Bummi 27. Feb 2012 12:54

AW: MySQL: Trigger After Update, Parameterübergabe
 
genau ... ;-)

jobo 27. Feb 2012 13:02

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 ...
:)

borncrush 27. Feb 2012 13:35

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 :(

Bummi 27. Feb 2012 13:42

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 ...

borncrush 27. Feb 2012 14:10

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 11:36 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz