AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi MySQL: Trigger After Update, Parameterübergabe
Thema durchsuchen
Ansicht
Themen-Optionen

MySQL: Trigger After Update, Parameterübergabe

Ein Thema von borncrush · begonnen am 27. Feb 2012 · letzter Beitrag vom 27. Feb 2012
Antwort Antwort
Benutzerbild von borncrush
borncrush

Registriert seit: 18. Dez 2005
Ort: Berlin
115 Beiträge
 
Delphi XE7 Enterprise
 
#1

MySQL: Trigger After Update, Parameterübergabe

  Alt 27. Feb 2012, 13:16
Datenbank: MySQL • Version: 5 • Zugriff über: unabhängig davon (ZEOS)
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
Delphi programming
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#2

AW: MySQL: Trigger After Update, Parameterübergabe

  Alt 27. Feb 2012, 13:29
Äh, welche "User-ID" soll der denn ausgeben, wenn Du keine verwendest?
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#3

AW: MySQL: Trigger After Update, Parameterübergabe

  Alt 27. Feb 2012, 13:36
Sieht nach ShIShO aus .... wenn MySQL - Sessions kennt, kannst Du gegf. (dirty) über eine Hilfstabelle die Session mit dem User verbundeln.
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#4

AW: MySQL: Trigger After Update, Parameterübergabe

  Alt 27. Feb 2012, 13:52
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.
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#5

AW: MySQL: Trigger After Update, Parameterübergabe

  Alt 27. Feb 2012, 13:54
genau ...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
jobo

Registriert seit: 29. Nov 2010
3.072 Beiträge
 
Delphi 2010 Enterprise
 
#6

AW: MySQL: Trigger After Update, Parameterübergabe

  Alt 27. Feb 2012, 14:02
Das wäre ein schöner Eintrag für die DP Hints und so User wie mich, die irgendwo hinterm Mond ...
Gruß, Jo
  Mit Zitat antworten Zitat
Benutzerbild von borncrush
borncrush

Registriert seit: 18. Dez 2005
Ort: Berlin
115 Beiträge
 
Delphi XE7 Enterprise
 
#7

AW: MySQL: Trigger After Update, Parameterübergabe

  Alt 27. Feb 2012, 14:35
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" .... also nachprogrammieren
Delphi programming
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#8

AW: MySQL: Trigger After Update, Parameterübergabe

  Alt 27. Feb 2012, 14:42
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 ...
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von borncrush
borncrush

Registriert seit: 18. Dez 2005
Ort: Berlin
115 Beiträge
 
Delphi XE7 Enterprise
 
#9

AW: MySQL: Trigger After Update, Parameterübergabe

  Alt 27. Feb 2012, 15:10
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.

Delphi programming
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:42 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