Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Veränderung in der Mysql-Db bemerken udn Mysql-Dump und csv- (https://www.delphipraxis.net/73834-veraenderung-der-mysql-db-bemerken-udn-mysql-dump-und-csv.html)

drschubi 24. Jul 2006 18:13

Datenbank: Mysql • Version: 5 • Zugriff über: Zeos

Veränderung in der Mysql-Db bemerken udn Mysql-Dump und csv-
 
Hallo,
wie bekomme ich mit, daß ein Eintrag in der Datenbank geändert wurde.

Stored Procedures scheinem mir zu kompliziert, mysql.de ist da nicht wirklich eine Hilfe.
Gibt es eigentlich noch eine andere Möglichkeit automatisiert auf eine Veränderung der Datenbank zu reagieren.
Wie macht Ihr das?


Gruß René

mkinzler 24. Jul 2006 18:15

Re: Veränderung in der Mysql-Db bemerken udn Mysql-Dump und
 
Dafür eignen sich Trigger sehr gut. Diese werden bei bestimmten Aktionen ( Z.B. Insert) aufgerufen. In ihnen kann man dann auf die Aktion reagieren bzw. sie verhindern oder nur loggen.

drschubi 24. Jul 2006 18:32

Re: Veränderung in der Mysql-Db bemerken udn Mysql-Dump und
 
Hallo mkinzler,

danke für die Antwort, stimmt es daß Trigger keine Select-Anweisungen zulassen?
Sind sie somit für einen SQL-Dump nicht unbrauchbar?

Wie könnte so ein Trigger ausehen?

Gruß René

mkinzler 24. Jul 2006 18:35

Re: Veränderung in der Mysql-Db bemerken udn Mysql-Dump und
 
Zitat:

danke für die Antwort, stimmt es daß Trigger keine Select-Anweisungen zulassen?
Ja
Zitat:

Sind sie somit für einen SQL-Dump nicht unbrauchbar?
Wenn du damit meinst, das dich interessiert, wer wann was abgefragt hat. Auch ja.
Aber im Allgemeinen interessieren ja auch nur die DML-Statements.

drschubi 24. Jul 2006 18:51

Re: Veränderung in der Mysql-Db bemerken udn Mysql-Dump und
 
Hi mkinzler,

ich erstelle also einen Trigger mit:

SQL-Code:
CREATE TRIGGER con_stat BEFORE update ON aa_shopdata
Dieser Trigger soll dann prüfen ob in der Tabelle aa_shopdata ein Eintrag hinzugefügt wurde.

Wie kan ich nun definieren, daß eine aktion erfolgen soll? Z.Bsp. ein Sql-Dump.


Gruss René

mkinzler 24. Jul 2006 18:56

Re: Veränderung in der Mysql-Db bemerken udn Mysql-Dump und
 
Der Trigger prüft nicht, ob was passiert ist, sondern wird aufgerufen wenn etwas passiert ( ein art Callback).
Das von dir genannte Beispiel wird aufgerufen nach dem ein Update gestartet wurde, bevor es wirksam wird.

drschubi 24. Jul 2006 18:59

Re: Veränderung in der Mysql-Db bemerken udn Mysql-Dump und
 
Ja das ist richtig. Der Trigger prüft ob ein Eintrag upgedatet werden soll.
Ist es auch möglich nur bei bestimmten Feldern zu reagieren?

mkinzler 24. Jul 2006 19:01

Re: Veränderung in der Mysql-Db bemerken udn Mysql-Dump und
 
Jein. der Trigger springt immer beim ereignis an, aber du kannst ja innerhalb des Triggers entscheiden was du machst. Wenn die Werte ok sind, machst du einfach garnichts.

Jelly 24. Jul 2006 19:02

Re: Veränderung in der Mysql-Db bemerken udn Mysql-Dump und
 
Das kannst du im Trigger mittels einer if-Bedingung selber festlegen.

drschubi 24. Jul 2006 19:07

Re: Veränderung in der Mysql-Db bemerken udn Mysql-Dump und
 
Wie sollte dann so ein Trigger aussehen?

Gibt es dazu irgendwo Beispiele, auf mysql.de ist wie gesagt nicht viel zu finden.
Woher habt Ihr denn Euer wissen über Trigger?

Jelly 24. Jul 2006 19:17

Re: Veränderung in der Mysql-Db bemerken udn Mysql-Dump und
 
Ich kenn mich mit den MySQL Triggern nicht so aus (gibts ja erst sein der 5-er Version), aber meist hast Du so temporäre Tabelle die Inserted und Deleted heissen. Beim Einfügen eines Datensatzes kannst Du also z.B. mit einem
SQL-Code:
select * from inserted
die Spaltenwerte abfragen.
Auch so Dinge wie
SQL-Code:
set Name = (Select Name from Inserted)
können da sehr nützlich sein.

Aber wie gesagt, wie die genaue Syntax bei MySQL heisst, weiss ich nicht. Aber das sollte schon in der Online Hilfe zu finden sein.

mkinzler 24. Jul 2006 19:17

Re: Veränderung in der Mysql-Db bemerken udn Mysql-Dump und
 
Mit MySQL kenn ich mich nicht so aus, aber normalerweise gibt es die Kontextvariablen old und new mit denen man auf die verschiedenen Wertezustände zugteifen kann ( wobei es bei einem Insert nur new und beim Delete nur old gibt). An sonsten gelten für Trigger die Regeln für SPs.

drschubi 24. Jul 2006 19:33

Re: Veränderung in der Mysql-Db bemerken udn Mysql-Dump und
 
Ich danke Euch, muss ich mich nach einer guten Lektüre umsehen, Ihr habt mir ja schon gute Anhaltspunkte gegeben.

Gruß René


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:40 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-2025 by Thomas Breitkreuz