Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi IBScript und INSERT - Befehl (https://www.delphipraxis.net/126705-ibscript-und-insert-befehl.html)

RWarnecke 31. Dez 2008 12:52

Datenbank: Firebird • Version: 2.1 • Zugriff über: IB Komponenten

IBScript und INSERT - Befehl
 
Hallo zusammen,

in meinem WebUpdate von Code-Orakel lasse ich ein SQL-Script mit der Komponente TIBScript ausführen und danach wieder löschen. Das funktioniert auch wunderbar. Ich habe nur ein Problem, es gibt User, die überspringen auch mal ein Update und andere machen jedes Update. Dadurch muss ich ja das SQL-Skript im Webupdate lassen. Jetzt ist nur die Frage, kann ich über die Komponente TIBScript die INSERT-Befehle steuern ? Oder kann ich in das SQL-Script eine Art IF-Abfrage einbauen, die vorher abprüft ob der Datensatz vorhanden ist ? Oder sollte ich für das WebUpdate besser eine Stored Procedure nehmen und das komplette Update der Datenabank darüber steuern ?

Ihr seht Fragen über Fragen :gruebel: , ich brauche da euren Rat, wie Ihr es machen würdet. Vielleicht gibt es ja noch andere Lösungswege ?

mkinzler 31. Dez 2008 12:59

Re: IBScript und INSERT - Befehl
 
Leg die Version doch in der Datenbank ab und dann ein Updateskript von Version x auf x+1. Beim Update führst du dann rekursiv die updateskripte aus bis die Zielversion ereicht ist.

RWarnecke 31. Dez 2008 13:09

Re: IBScript und INSERT - Befehl
 
Zitat:

Zitat von mkinzler
Leg die Version doch in der Datenbank ab und dann ein Updateskript von Version x auf x+1. Beim Update führst du dann rekursiv die updateskripte aus bis die Zielversion ereicht ist.

Danke für Deine schnelle Antwort. Das hört sich schonmal nicht schlecht an. Nur habe ich halt den Fehler begangen, nicht von anfang an daran zu denken. Deshalb bin ich im Moment der Meinung, das Dein Vorschlag in der jetzigen Situation schwer umzusetzen ist. Ich werde aber darüber aber noch nachdenken, während ich noch auf andere Vorschläge warte.

mkinzler 31. Dez 2008 13:28

Re: IBScript und INSERT - Befehl
 
Weist du noch, welceh DB-Änderungen mt welcher Programmversion erstellt wurden? Dann kannst du die Updateschritte anhand der vorhandenen Programmversion statt der Datenbankversion bestimmen.

RWarnecke 31. Dez 2008 14:23

Re: IBScript und INSERT - Befehl
 
Der Ansatz mit der Programmversion gefällt mir doch um einiges besser. Ich werde jetzt mal schauen, wie ich das in meinem Sourcecode umsetzen kann.

Edit: Bin aber totzdem noch weiter offen für andere Vorschläge.

p80286 31. Dez 2008 15:11

Re: IBScript und INSERT - Befehl
 
Hallo Rolf,

ich denke mkinzler hat alles wichtige gesagt. Ich hatte/habe ein ähnliches Problem da konnte ich es mir aber erlauben 5 Updates nochmal laufen zu lassen. Da jedesmal nur geändert wurde, was noch nicht vorhanden war. Für mich war's einfach aber bestimmt nicht elegant.

Grüße
K-H

mkinzler 31. Dez 2008 15:51

Re: IBScript und INSERT - Befehl
 
Es ist alles eine Frage des Aufwands. Man kann natürlich auch die vorhandene Datenbankstruktur mit der Zielstruktur vergleichen und dann spzifisches Skript generieren.

RWarnecke 31. Dez 2008 16:10

Re: IBScript und INSERT - Befehl
 
Ich habe das irgendwie nicht von Anfang an richtig durchdacht. Ich hänge im Moment daran, wie ich das mit den unterschiedlichen SQL-Skripten machen soll. Nur ich finde irgendwie keinen richtigen Ansatz dafür. Am einfachsten wäre, dass ich ein SQL-Skript mit if Abfragen habe. Damit hätte ich am wenigsten Aufwand. Oder kann ich innerhalb der Komponente TIBScript auf die INSERT-Statement reagieren ?

mkinzler 31. Dez 2008 16:12

Re: IBScript und INSERT - Befehl
 
In einem Execute Block stehen alle PL Konstrukte zur verfügung

RWarnecke 31. Dez 2008 16:56

Re: IBScript und INSERT - Befehl
 
Zitat:

Zitat von mkinzler
In einem Execute Block stehen alle PL Konstrukte zur verfügung

Kannst Du mir dazu ein Beispiel geben bitte, da ich keinen blassen Schimmer habe, was PL Konstrukte sind ?


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:46 Uhr.
Seite 1 von 2  1 2      

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