MariaDB Tabellen Abgleichen
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MariaDB Tabellen Abgleichen
Das mit dem git remote add origin hat jetzt geklappt, die URL war nur falsch. habe das .de vergessen. Ich sehe die Dateien nur noch nicht im Ziel verzeichnis auf dem Internet PC
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: MariaDB Tabellen Abgleichen
pluto hat geschrieben:So nun bin ich mir nicht sicher wo ich "git init --bare" ausführen soll?
Soll ich das Zuhause ausführen oder auf dem Internet Server?
Dort wo dein primäres Archiv sein soll -> auf dem Server.
Ich sehe die Dateien nur noch nicht im Ziel verzeichnis auf dem Internet PC
Auf dem Server hast du --bare angegeben -> dort gibt es keine ausgecheckten Dateien, die git Datenbank befindet sich im ".git" Verzeichnis.
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MariaDB Tabellen Abgleichen
Vielen Dank für eure Hilfe, es war ein tipp Fehler in der URL. Ich habe das ".de" vergessen.
Nun kann ich Problemlos Daten vom PC auf dem Internet-server schieben und auch wieder Runterholen.
Mir kommt es aber etwas "aufwendig" vor... Die nächste frage wäre natürlich noch, wie man das ganze Automatisieren könnte.
Ich habe jetzt zum Beispiel Änderungen bei den PC-Git gemacht und die sollen nun z.b. mit dem Internet-Server abgeglichen werden.
Beim PC Runterfahren wäre es wohl keine gute Idee, vielleicht per Cron-Job?
Ich werde das Konzept Testen, vielleicht ist es ja das was ich gesucht habe.
Nun kann ich Problemlos Daten vom PC auf dem Internet-server schieben und auch wieder Runterholen.
Mir kommt es aber etwas "aufwendig" vor... Die nächste frage wäre natürlich noch, wie man das ganze Automatisieren könnte.
Ich habe jetzt zum Beispiel Änderungen bei den PC-Git gemacht und die sollen nun z.b. mit dem Internet-Server abgeglichen werden.
Beim PC Runterfahren wäre es wohl keine gute Idee, vielleicht per Cron-Job?
Ich werde das Konzept Testen, vielleicht ist es ja das was ich gesucht habe.
MFG
Michael Springwald
Michael Springwald
- fliegermichl
- Lazarusforum e. V.
- Beiträge: 1435
- Registriert: Do 9. Jun 2011, 09:42
- OS, Lazarus, FPC: Lazarus Fixes FPC Stable
- CPU-Target: 32/64Bit
- Wohnort: Echzell
Re: MariaDB Tabellen Abgleichen
Ja sorry, da habe ich ein paar Scenarien zeitgleich aufgezeigt.
automatisch commiten ist meiner Meinung nach nicht so arg sinnvoll. Woher soll ein Script wissen, wann Du einen Entwicklungsvorgang soweit abgeschlossen hast, daß er es wert wäre wieder hergestellt zu werden.
und auch wenn es sich nur um Notizen handelt, hat man ja doch irgendwo einen "in Vorgang" und einen "speicher und wiederherstellbar wertigen" Status.
automatisch commiten ist meiner Meinung nach nicht so arg sinnvoll. Woher soll ein Script wissen, wann Du einen Entwicklungsvorgang soweit abgeschlossen hast, daß er es wert wäre wieder hergestellt zu werden.
und auch wenn es sich nur um Notizen handelt, hat man ja doch irgendwo einen "in Vorgang" und einen "speicher und wiederherstellbar wertigen" Status.
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: MariaDB Tabellen Abgleichen
pluto hat geschrieben:Die nächste frage wäre natürlich noch, wie man das ganze Automatisieren könnte.
Eine Komponente zur Überwachung von Verzeichnissen und Dateien ist hier:
https://gitlab.com/mseide-msegui/mseide ... change.pas
Mit MSEgit hat man einen schönen Überblick über die geänderten Dateien vor dem committen und pushen.
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MariaDB Tabellen Abgleichen
automatisch commiten ist meiner Meinung nach nicht so arg sinnvoll. Woher soll ein Script wissen, wann Du einen Entwicklungsvorgang soweit abgeschlossen hast, daß er es wert wäre wieder hergestellt zu werden.
und auch wenn es sich nur um Notizen handelt, hat man ja doch irgendwo einen "in Vorgang" und einen "speicher und wiederherstellbar wertigen" Status.
Meine Datenbank Anwendung wüsste es... Gut, ich könnte mir ein kleines Script schreiben um den Vorgang zu vereinfachen....
Ich werde es mir ein paar Wochen ansehen, ich glaube aber, dass ist nichts für mich...
Eine Komponente zur Überwachung von Verzeichnissen und Dateien ist hier:
https://gitlab.com/mseide-msegui/mseide ... change.pas
Ich habe mir den Soruce-Code angeschaut: Nutzt du hier eine Kernel-Schnittstelle für das Überwachen?
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: MariaDB Tabellen Abgleichen
pluto hat geschrieben:Ich habe mir den Soruce-Code angeschaut: Nutzt du hier eine Kernel-Schnittstelle für das Überwachen?
Ja.
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MariaDB Tabellen Abgleichen
Ja.
Interessant. Muss ich mir dann wohl noch mal genauer ansehen.
Erst mal vielen dank für eure Hilfe. Das ist zwar nicht das was ich gesucht habe, damit bleibt die Urspungsfrage leider ungeklärt.
Ich werde wohl hier wohl was eigenes anfangen. Da es hier offenbar nichts Fertiges gibt um die angelegte Histroy-Table zu exportieren und wieder zu Importieren.
Das mag zwar nicht unbedingt der Normale weg einer DB sein, ich finde ihn aber sehr Kreativ. In der WebOberfläche müsste ich dann nur noch ein Button einbauen: "DB Uploaden" oder so ähnlich.
Fazit: Nun kenne ich GIT ganz grob.... ich denke, für einen Soruce-Code ist das nicht schlecht, aber für Notizen ich weiß nicht. Gibt es eigentlich in GIT eine Funktion um ganz alte Dateien komplett zu Entfernen?
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: MariaDB Tabellen Abgleichen
pluto hat geschrieben:Das mag zwar nicht unbedingt der Normale weg einer DB sein, ich finde ihn aber sehr Kreativ.
Wie gesagt, das nennt sich Replikation.
Fazit: Nun kenne ich GIT ganz grob.... ich denke, für einen Soruce-Code ist das nicht schlecht, aber für Notizen ich weiß nicht.
Ich befürchte, dass du mit deinem Vorhaben auf dem Holzweg bist.
Gibt es eigentlich in GIT eine Funktion um ganz alte Dateien komplett zu Entfernen?
Nicht einzelne Dateien, aber die History kann begrenzt werden:
https://git-scm.com/docs/git-clone
Stichwort "shallow".
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MariaDB Tabellen Abgleichen
Wie gesagt, das nennt sich Replikation.
Es ist eine Form davon.....
Weil ich möchte ja es so machen, dass der Laptop nicht an sein muss....
Ich befürchte, dass du mit deinem Vorhaben auf dem Holzweg bist.
Was genau meinst du? GIT zu verwenden oder die Datenbank Anwendung?
Nicht einzelne Dateien, aber die History kann begrenzt werden:
Aha.... das ist schon mal nicht schlecht.....
MFG
Michael Springwald
Michael Springwald
-
- Beiträge: 2013
- Registriert: Do 16. Okt 2008, 10:22
- OS, Lazarus, FPC: Linux,Windows,FreeBSD,(MSEide+MSEgui 4.6,git master FPC 3.0.4,fixes_3_0)
- CPU-Target: x86,x64,ARM
Re: MariaDB Tabellen Abgleichen
pluto hat geschrieben:Was genau meinst du? GIT zu verwenden oder die Datenbank Anwendung?
Eine Datenbank mit Replikation als Notizenspeicher zu verwenden. Den Aufwand um eine zuverlässige Replikation vor allem im Multiuser-Umfeld zu programmieren darf man auch nicht unterschätzen, siehe fliegermichls Kommentar dazu.
-
- Lazarusforum e. V.
- Beiträge: 7178
- Registriert: So 19. Nov 2006, 12:06
- OS, Lazarus, FPC: Linux Mint 19.3
- CPU-Target: AMD
- Wohnort: Oldenburg(Oldenburg)
Re: MariaDB Tabellen Abgleichen
MariaDB [NoteManager_28813391]> select id,Action, NoteID, title, CreateDateTime from ContentList_Histroy;
+----+--------+--------+----------------------------------------------------------+---------------------+
| id | Action | NoteID | title | CreateDateTime |
+----+--------+--------+----------------------------------------------------------+---------------------+
| 1 | INSERT | NULL | Gemüse | 2018-10-22 21:51:33 |
| 2 | INSERT | 2 | Vermarktung | 2018-10-22 21:51:33 |
| 3 | INSERT | 3 | Einteilung | 2018-10-22 21:51:33 |
| 4 | INSERT | 4 | Vermarktungs- und Qualitätsnormen | 2018-10-22 21:51:33 |
| 5 | INSERT | 5 | Kohl | 2018-10-22 21:51:33 |
| 6 | INSERT | 6 | Namensgebung | 2018-10-22 21:51:33 |
| 7 | INSERT | 7 | Systematik und Verbreitung | 2018-10-22 21:51:33 |
| 8 | INSERT | 8 | Gartensalat | 2018-10-22 21:51:33 |
| 9 | INSERT | 9 | Kultur | 2018-10-22 21:51:33 |
| 10 | INSERT | 10 | Geschichte | 2018-10-22 21:51:33 |
| 11 | INSERT | 11 | Sonstiges | 2018-10-22 21:51:33 |
| 12 | INSERT | 12 | Gartensalat | 2018-10-22 21:51:33 |
| 13 | INSERT | 13 | Beschreibung | 2018-10-22 21:51:33 |
| 14 | INSERT | 14 | Inhaltsstoffe | 2018-10-22 21:51:33 |
| 15 | INSERT | 15 | Kulturformen | 2018-10-22 21:51:33 |
| 16 | INSERT | 16 | STM32 | 2018-10-22 21:51:33 |
| 17 | INSERT | 17 | 2_Eintrag | 2018-10-22 21:51:33 |
| 18 | INSERT | 18 | 3_Eintrag | 2018-10-22 21:51:33 |
| 19 | INSERT | 19 | 1_Eintrag | 2018-10-22 21:51:33 |
| 20 | INSERT | 20 | BallonFahrt | 2018-10-22 21:51:33 |
| 21 | INSERT | 21 | 18650_battery_shild_v3 | 2018-10-22 21:51:33 |
| 22 | INSERT | 22 | Amazon-Wenger-Schweizer-Offiziersmesser-Messer-Schatulle | 2018-10-22 21:51:33 |
| 23 | INSERT | 23 | DA GEHT NOCH WAS | 2018-10-22 21:51:33 |
| 24 | INSERT | 24 | Schweizer Ingenieur im Wenger gefunden | 2018-10-22 21:51:33 |
| 25 | INSERT | 25 | Praktisch für unterwegs | 2018-10-22 21:51:33 |
| 26 | INSERT | 26 | Jeden Tag eine neue Welt | 2018-10-22 21:51:33 |
| 27 | INSERT | 27 | SternenPerfekt in allen Lebenslagen | 2018-10-22 21:51:33 |
| 28 | INSERT | 28 | Zahnstocher fehlt | 2018-10-22 21:51:33 |
| 29 | INSERT | 29 | zwischenablage | 2018-10-22 21:51:33 |
| 30 | INSERT | 30 | Begriffe_Arduino | 2018-10-22 21:51:33 |
| 31 | INSERT | 31 | Entwickler Boards | 2018-10-22 21:51:33 |
| 32 | INSERT | 32 | Stromversorgung | 2018-10-22 21:51:33 |
| 33 | INSERT | 33 | Sound | 2018-10-22 21:51:33 |
| 34 | INSERT | 34 | LED | 2018-10-22 21:51:33 |
| 35 | INSERT | 35 | Sonstiges | 2018-10-22 21:51:33 |
| 36 | INSERT | 36 | RTC | 2018-10-22 21:51:33 |
| 37 | INSERT | 37 | Drahtlos_Wireless | 2018-10-22 21:51:33 |
| 38 | INSERT | 38 | LCD | 2018-10-22 21:51:33 |
| 39 | INSERT | 39 | MCU | 2018-10-22 21:51:33 |
| 40 | INSERT | 40 | Sensoren | 2018-10-22 21:51:33 |
| 41 | INSERT | 41 | Zwischenablage_Arduino | 2018-10-22 21:51:33 |
| 42 | INSERT | 42 | KTT | 2018-10-22 21:51:33 |
| 43 | INSERT | 43 | 2_Eintrag | 2018-10-22 21:51:33 |
| 44 | INSERT | 44 | 6_Eintrag | 2018-10-22 21:51:33 |
| 45 | INSERT | 45 | 4_Eintrag | 2018-10-22 21:51:33 |
| 46 | INSERT | 46 | 3_Eintrag | 2018-10-22 21:51:33 |
| 47 | INSERT | 47 | 8_Eintrag | 2018-10-22 21:51:33 |
| 48 | INSERT | 48 | 7_Eintrag | 2018-10-22 21:51:33 |
| 49 | INSERT | 49 | 5_Eintrag | 2018-10-22 21:51:33 |
| 50 | INSERT | 50 | 1_Eintrag | 2018-10-22 21:51:33 |
| 51 | INSERT | 51 | Rübsen | 2018-10-22 21:51:33 |
| 52 | INSERT | 52 | Verbreitung | 2018-10-22 21:51:33 |
| 53 | INSERT | 53 | Merkmale | 2018-10-22 21:51:33 |
| 54 | INSERT | 54 | Rübsen | 2018-10-22 21:51:33 |
| 55 | INSERT | 55 | Systematik | 2018-10-22 21:51:33 |
| 56 | UPDATE | 42 | KTT | 2018-10-22 21:51:33 |
| 57 | UPDATE | 42 | KTT | 2018-10-22 21:51:33 |
| 58 | UPDATE | 42 | KTT | 2018-10-22 21:51:33 |
| 59 | UPDATE | 47 | 8_Eintrag | 2018-10-22 21:51:33 |
| 60 | UPDATE | 45 | 4_Eintrag | 2018-10-22 21:51:33 |
| 61 | UPDATE | 44 | 6_Eintrag | 2018-10-22 21:51:33 |
| 62 | UPDATE | 43 | 2_Eintrag | 2018-10-22 21:51:33 |
+----+--------+--------+----------------------------------------------------------+---------------------+
62 rows in set (0.00 sec)
[/quote]
So sieht die Table Histroy bisher aus... Mein nächster Schritt wäre jetzt: Diese Tabelle komplett zu Exportieren in einer "Austausch" Datei. Der nächste wäre dann, diese Datei einzulesen. Später soll es im Ziel Verzeichnis noch eine Info Datei geben, wann der letzte Export statt fand.... damit nicht immer alles exportiert werden muss.
So werden z.b. die Trigger aus meiner Anwendung heraus erstellt:
Dieser Weg klappt recht gut. Was ich bisher selten bis gar nicht beobachtet habe bei anderen Projekten: Meine Anwendung kann "sogar" eine Datenbank komplett neu Anlegen mit den Nötigen Tabellen und soweiter.... Hier verwende ich ein "Trick".... den ich irgendwo im Internet gefunden habe....
Vielleicht wird jetzt mein Vorhaben "klarer" und ich konnte zeigen, dass es bereits einen Code gibt.
Im Anhang gibt es noch ein Bild wie die Web Oberfläche derzeit aussieht.
+----+--------+--------+----------------------------------------------------------+---------------------+
| id | Action | NoteID | title | CreateDateTime |
+----+--------+--------+----------------------------------------------------------+---------------------+
| 1 | INSERT | NULL | Gemüse | 2018-10-22 21:51:33 |
| 2 | INSERT | 2 | Vermarktung | 2018-10-22 21:51:33 |
| 3 | INSERT | 3 | Einteilung | 2018-10-22 21:51:33 |
| 4 | INSERT | 4 | Vermarktungs- und Qualitätsnormen | 2018-10-22 21:51:33 |
| 5 | INSERT | 5 | Kohl | 2018-10-22 21:51:33 |
| 6 | INSERT | 6 | Namensgebung | 2018-10-22 21:51:33 |
| 7 | INSERT | 7 | Systematik und Verbreitung | 2018-10-22 21:51:33 |
| 8 | INSERT | 8 | Gartensalat | 2018-10-22 21:51:33 |
| 9 | INSERT | 9 | Kultur | 2018-10-22 21:51:33 |
| 10 | INSERT | 10 | Geschichte | 2018-10-22 21:51:33 |
| 11 | INSERT | 11 | Sonstiges | 2018-10-22 21:51:33 |
| 12 | INSERT | 12 | Gartensalat | 2018-10-22 21:51:33 |
| 13 | INSERT | 13 | Beschreibung | 2018-10-22 21:51:33 |
| 14 | INSERT | 14 | Inhaltsstoffe | 2018-10-22 21:51:33 |
| 15 | INSERT | 15 | Kulturformen | 2018-10-22 21:51:33 |
| 16 | INSERT | 16 | STM32 | 2018-10-22 21:51:33 |
| 17 | INSERT | 17 | 2_Eintrag | 2018-10-22 21:51:33 |
| 18 | INSERT | 18 | 3_Eintrag | 2018-10-22 21:51:33 |
| 19 | INSERT | 19 | 1_Eintrag | 2018-10-22 21:51:33 |
| 20 | INSERT | 20 | BallonFahrt | 2018-10-22 21:51:33 |
| 21 | INSERT | 21 | 18650_battery_shild_v3 | 2018-10-22 21:51:33 |
| 22 | INSERT | 22 | Amazon-Wenger-Schweizer-Offiziersmesser-Messer-Schatulle | 2018-10-22 21:51:33 |
| 23 | INSERT | 23 | DA GEHT NOCH WAS | 2018-10-22 21:51:33 |
| 24 | INSERT | 24 | Schweizer Ingenieur im Wenger gefunden | 2018-10-22 21:51:33 |
| 25 | INSERT | 25 | Praktisch für unterwegs | 2018-10-22 21:51:33 |
| 26 | INSERT | 26 | Jeden Tag eine neue Welt | 2018-10-22 21:51:33 |
| 27 | INSERT | 27 | SternenPerfekt in allen Lebenslagen | 2018-10-22 21:51:33 |
| 28 | INSERT | 28 | Zahnstocher fehlt | 2018-10-22 21:51:33 |
| 29 | INSERT | 29 | zwischenablage | 2018-10-22 21:51:33 |
| 30 | INSERT | 30 | Begriffe_Arduino | 2018-10-22 21:51:33 |
| 31 | INSERT | 31 | Entwickler Boards | 2018-10-22 21:51:33 |
| 32 | INSERT | 32 | Stromversorgung | 2018-10-22 21:51:33 |
| 33 | INSERT | 33 | Sound | 2018-10-22 21:51:33 |
| 34 | INSERT | 34 | LED | 2018-10-22 21:51:33 |
| 35 | INSERT | 35 | Sonstiges | 2018-10-22 21:51:33 |
| 36 | INSERT | 36 | RTC | 2018-10-22 21:51:33 |
| 37 | INSERT | 37 | Drahtlos_Wireless | 2018-10-22 21:51:33 |
| 38 | INSERT | 38 | LCD | 2018-10-22 21:51:33 |
| 39 | INSERT | 39 | MCU | 2018-10-22 21:51:33 |
| 40 | INSERT | 40 | Sensoren | 2018-10-22 21:51:33 |
| 41 | INSERT | 41 | Zwischenablage_Arduino | 2018-10-22 21:51:33 |
| 42 | INSERT | 42 | KTT | 2018-10-22 21:51:33 |
| 43 | INSERT | 43 | 2_Eintrag | 2018-10-22 21:51:33 |
| 44 | INSERT | 44 | 6_Eintrag | 2018-10-22 21:51:33 |
| 45 | INSERT | 45 | 4_Eintrag | 2018-10-22 21:51:33 |
| 46 | INSERT | 46 | 3_Eintrag | 2018-10-22 21:51:33 |
| 47 | INSERT | 47 | 8_Eintrag | 2018-10-22 21:51:33 |
| 48 | INSERT | 48 | 7_Eintrag | 2018-10-22 21:51:33 |
| 49 | INSERT | 49 | 5_Eintrag | 2018-10-22 21:51:33 |
| 50 | INSERT | 50 | 1_Eintrag | 2018-10-22 21:51:33 |
| 51 | INSERT | 51 | Rübsen | 2018-10-22 21:51:33 |
| 52 | INSERT | 52 | Verbreitung | 2018-10-22 21:51:33 |
| 53 | INSERT | 53 | Merkmale | 2018-10-22 21:51:33 |
| 54 | INSERT | 54 | Rübsen | 2018-10-22 21:51:33 |
| 55 | INSERT | 55 | Systematik | 2018-10-22 21:51:33 |
| 56 | UPDATE | 42 | KTT | 2018-10-22 21:51:33 |
| 57 | UPDATE | 42 | KTT | 2018-10-22 21:51:33 |
| 58 | UPDATE | 42 | KTT | 2018-10-22 21:51:33 |
| 59 | UPDATE | 47 | 8_Eintrag | 2018-10-22 21:51:33 |
| 60 | UPDATE | 45 | 4_Eintrag | 2018-10-22 21:51:33 |
| 61 | UPDATE | 44 | 6_Eintrag | 2018-10-22 21:51:33 |
| 62 | UPDATE | 43 | 2_Eintrag | 2018-10-22 21:51:33 |
+----+--------+--------+----------------------------------------------------------+---------------------+
62 rows in set (0.00 sec)
[/quote]
So sieht die Table Histroy bisher aus... Mein nächster Schritt wäre jetzt: Diese Tabelle komplett zu Exportieren in einer "Austausch" Datei. Der nächste wäre dann, diese Datei einzulesen. Später soll es im Ziel Verzeichnis noch eine Info Datei geben, wann der letzte Export statt fand.... damit nicht immer alles exportiert werden muss.
So werden z.b. die Trigger aus meiner Anwendung heraus erstellt:
Code: Alles auswählen
procedure TPLNoteManager.CreateTrigger();
var
s:String;
begin
{ ' DECLARE myRandomNumber INT;' + LineEnding +
' DECLARE TempNoteID INT;' + LineEnding +
' SET myRandomNumber=CAST(rand()*40000 as UNSIGNED);' + LineEnding +
' SET TempNoteID=new.id+myRandomNumber;' + LineEnding +}
s:='CREATE TRIGGER `ContentList_BEFORE_INSERT` BEFORE INSERT ON ContentList FOR EACH ROW' +LineEnding+
' BEGIN ' + LineEnding +
' DECLARE TempNoteID INT;' + LineEnding +
' SELECT IFNULL(MAX(id),0)' + LineEnding +
' FROM ContentList' + LineEnding +
' INTO TempNoteID;' + LineEnding +
' set new.NoteID=TempNoteID+1; ' + LineEnding+
' END';
MariaDB2.AConnection.ExecuteDirect(s);
s:='CREATE TRIGGER `ContentList_AFTER_INSERT` AFTER INSERT ON ContentList FOR EACH ROW' +LineEnding+
' BEGIN ' + LineEnding +
' INSERT INTO ContentList_Histroy(Action, NoteID, ParentID, CreateDateTime, LastReadDataTime, LastWriteDataTime, CountRead, CountWrite, Title, Text) values ( ''INSERT'', new.NoteID, new.ParentID, new.CreateDateTime, new.LastReadDataTime, new.LastWriteDataTime, new.CountRead, new.CountWrite, new.Title, new.Text); ' + LineEnding +
' END';
MariaDB2.AConnection.ExecuteDirect(s);
s:='CREATE TRIGGER ContentList_AFTER_UPDATE AFTER UPDATE ON ContentList FOR EACH ROW '+
'INSERT INTO ContentList_His[code=laz][/code]troy(Action, NoteID, ParentID, CreateDateTime, LastReadDataTime, LastWriteDataTime, CountRead, CountWrite, Title, Text) values ( ''UPDATE'', new.NoteID, new.ParentID, new.CreateDateTime, new.LastReadDataTime, new.LastWriteDataTime, new.CountRead, new.CountWrite, new.Title, new.Text);'+LineEnding;
MariaDB2.AConnection.ExecuteDirect(s);
s:='CREATE TRIGGER ContentList_AFTER_DELETE AFTER DELETE ON ContentList FOR EACH ROW '+
'INSERT INTO ContentList_Histroy(Action, NoteID, ParentID, CreateDateTime, LastReadDataTime, LastWriteDataTime, CountRead, CountWrite, Title, Text) values ( ''DELETE'', old.NoteID, old.ParentID, old.CreateDateTime, old.LastReadDataTime, old.LastWriteDataTime, old.CountRead, old.CountWrite, old.Title, old.Text);' +LineEnding;
MariaDB2.AConnection.ExecuteDirect(s);
end; // TPLNoteManager.CreateTrigger
Dieser Weg klappt recht gut. Was ich bisher selten bis gar nicht beobachtet habe bei anderen Projekten: Meine Anwendung kann "sogar" eine Datenbank komplett neu Anlegen mit den Nötigen Tabellen und soweiter.... Hier verwende ich ein "Trick".... den ich irgendwo im Internet gefunden habe....
Code: Alles auswählen
procedure TPLNoteManager.CreateDB;
var
str:string;
begin
MariaDB2.AConnection.DatabaseName:='mysql';
MariaDB2.AConnection.ExecuteDirect('use mysql');
MariaDB2.AConnection.Open;
str:='SHOW DATABASES LIKE '''+DBName+''';';
MariaDB2.Query.SQL.Text:=str;
MariaDB2.Query.ExecSQL;
MariaDB2.Query.Open;
if MariaDB2.Query.RecordCount = 0 then begin
str:='CREATE DATABASE IF NOT EXISTS '+DBName;
MariaDB2.AConnection.ExecuteDirect(str);
MariaDB2.AConnection.ExecuteDirect('use ' + DBName);
MariaDB2.AConnection.DatabaseName:=DBName;
MariaDB2.ATransaction.Commit;
CreateTable();
CreateHistroyTable();
CreateTrigger();
end;
MariaDB2.AConnection.Close();
MariaDB2.AConnection.DatabaseName:=DBName;
MariaDB2.AConnection.Open;
end; // TPLNoteManager.CreateDB
Vielleicht wird jetzt mein Vorhaben "klarer" und ich konnte zeigen, dass es bereits einen Code gibt.
Im Anhang gibt es noch ein Bild wie die Web Oberfläche derzeit aussieht.
MFG
Michael Springwald
Michael Springwald