Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi SQL-Batch will nicht (https://www.delphipraxis.net/118404-sql-batch-will-nicht.html)

DeddyH 7. Aug 2008 09:46

Datenbank: Firebird • Version: 2.0 • Zugriff über: egal, SQL-Problem

SQL-Batch will nicht
 
Hallo,

ich möchte mir ein Update-Tool schreiben, mit dem ich per SQL-Script Tabellenstrukturen anlegen/ändern und evtl. Vorgabedaten einfügen kann. Allerdings bekomme ich bei "stinknormalem" DDL mit anschließendem DML Probleme. Ein Versuch unter IBExpert führte zum gleichen Ergebnis, daher vermute ich, ich habe im Script etwas Elementares vergessen.
Ein Beispiel:
SQL-Code:
--Transaktion ist gestartet
CREATE TABLE Wuppdi(Foo VARCHAR(10)); --das funktioniert
ALTER TABLE Wuppdi ADD Bar INTEGER;  --das funktioniert auch
INSERT INTO Wuppdi(Foo, Bar) VALUES('Blubb',10); --hier ist "INSERT" eine unbekannte Anweisung (!?)
Sieht jemand vielleicht meinen Denkfehler?

Danke im Voraus

mkinzler 7. Aug 2008 09:51

Re: SQL-Batch will nicht
 
Man muss auf jeden Fall sie Transaktion zuerst commiten.

DeddyH 7. Aug 2008 09:53

Re: SQL-Batch will nicht
 
Also zwischen DDL und DML ein Commit?

mkinzler 7. Aug 2008 09:54

Re: SQL-Batch will nicht
 
Ja. Denn sonst gibt es die Tabelle ja noch nicht. Lass dir mal eine Cretae-Skript von IBExpert erzeugen

DeddyH 7. Aug 2008 10:03

Re: SQL-Batch will nicht
 
Mist, das kann u.U. zu einem undefinierten Zustand führen. Dann werde ich das Ganze doch noch ein wenig "aufblasen" müssen. Vielleicht kann ich ja vorher einen Snapshot erzeugen, zu dem ich im Fehlerfall zurückkehren könnte. Auf jeden Fall Danke :thumb:

P.S.: Eine Fehlermeldung der Art "Table does not exists" hätte mir wohl auch schon weitergeholfen, wer weiß, was Firebird da geritten hat :D


Alle Zeitangaben in WEZ +1. Es ist jetzt 13:21 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