Hallo,
zu deiner Ausgangsfrage, warum es nicht klappt.
Delphi-Quellcode:
TMPSQL := TIBCSQL.Create(nil);
for I := 1 to 31 do
begin
TMPSQL.SQL.Add('INSERT INTO TBLCALENDAR(ISHOLIDAY,DATUM) VALUES(0,''13.07.2010'');');
end;
31 mal wird
insert into als Befehl eingetragen
Delphi-Quellcode:
TMPSQL.AutoCommit := True;
TMPSQL.Execute;
Jetzt wird der Code einmal zum Server geschickt.
Der sieht jetzt also folgendes
INSERT INTO TBLCALENDAR(ISHOLIDAY,DATUM) VALUES(0,''13.07.2010'');INSERT INTO TBLCALENDAR(ISHOLIDAY,DATUM) VALUES(0,''13.07.2010'');
INSERT INTO TBLCALENDAR(ISHOLIDAY,DATUM) VALUES(0,''13.07.2010'')
Und das waren nur 3 der 31.
Firebird kann im Untershcied zu MS-
SQL immer nur einen Befehl ausführen
(es sei denn, man benutzt irgendeine Script-Komponente).
Durch das Umbauen auf die Parameter ist
das TMPSQL.Execute;
mit in die For-Schleife gerutscht.
Somit wird der Befehl auch korrekt 31 mal ausgeführt.
Das war ja auch der ursprüngliche Plan ...
Zum Ändern der Tabellen-Struktur:
Warum soll das bei Firebird mehr Leistung bringen,
vom Trigger abgesehen ?
Index ist Index (bei Firebird zumindestens)
Ich würde das so lassen, falls später mal Replikation ein Thema ist,
ist der künstliche Schlüsel ID ideal.
Heiko