Hallo,
ich habe ein merkwürdiges Problem mit TIBSQL.
In einer Textdatei befindet sich folgendes Script. (Das Script wird von der IBConsole einwandfrei verarbeitet.)
SQL-Code:
CREATE TABLE "
INPUT_TEST"
(
"
JAHR" TINT ,
"
VER" TINT ,
"
KATEGORIE" TSTRING30 COLLATE DE_DE,
"
PARTNER" TSTRING15 COLLATE DE_DE,
"
EMPF" TSTRING15 COLLATE DE_DE,
"
PLANWERT"
DOUBLE PRECISION,
"
POSNR" TSTRING30 COLLATE DE_DE,
"
BWA" TSTRING15 COLLATE DE_DE,
"
SAISON" TINT
);
ALTER TABLE "
INPUT_TEST"
ADD FOREIGN KEY ("
VER")
REFERENCES "
VERSIONEN" ("
ID")
ON UPDATE CASCADE ON DELETE CASCADE;
SET TERM ^ ;
/* Triggers only will work for SQL triggers */
CREATE TRIGGER "
TRG_INPUT_TEST _0"
FOR "
INPUT_TEST"
ACTIVE BEFORE
INSERT POSITION 0
as
begin
if (new.ver
is null)
then SELECT id
FROM versionen
WHERE aktive=1
INTO new.ver;
end
^
SET TERM ;^
Mit folgendendem Code möchte ich das Script verarbeiten
Delphi-Quellcode:
procedure TFormDatasources.CreateTable(const Tablename: String);
// Über den Pararmeter Tablename soll später der Tabellenname kommen
// Hinter SystemDataprovider.DbDataprovider.Command2 verbirgt sich TIBSQL.
var
aSQL : TStringList;
begin
aSQL:=TStringList.Create;
Try
aSQL.LoadFromFile(ApplicationPath+'Datenbank\createtable.txt'); // Just for testing
With DM do
begin
SystemDataprovider.DbDataprovider.Transaction2.StartTransaction;
Try
SystemDataprovider.DbDataprovider.Command2.SQL:=aSQL;
SystemDataprovider.DbDataprovider.Command2.ExecQuery;
Finally
SystemDataprovider.DbDataprovider.Transaction2.Commit;
end;
end;
Finally
aSQL.Free;
end;
end;
Während der Ausführung tritt dann dieser Fehler auf
Code:
Dynamic
SQL Error
SQL error code = -104'
Token unknown - line 1' +'3, char 1'
'ALTER'
Hat jemand dafür eine Erklärung das ALTER hier nicht bekannt ist oder evt. sogar eine Lösung?