Forum: Datenbanken
Delphi
by Frank Borland,
24. Feb 2006
DatenModul.IBDataSet_AUT.Insert();
DatenModul.IBDataSet_AUTID.AsInteger := -1; // das klappt
DatenModul.IBDataSet_AUTAUT.AsString := DatenModul.Table_AUTAUT.AsString; // <--- das nicht
AUT.AUT hat einen unique index aber keine Ursprungsdaten, die unique sind
entweder raus mit dem unique oder die Ursprungsdaten nachbessern
Gruß
Forum: Datenbanken
Delphi
by Frank Borland,
24. Feb 2006
was hast Du denn nun gemacht: die ID aus dem Insertstatement genommen oder den Trigger umgestellt?
Gruß
Malte
Forum: Datenbanken
Delphi
by Frank Borland,
24. Feb 2006
Du zitierst zu entweder und schreibst einen Kommentar zu oder
Gruß
Malte
Forum: Datenbanken
Delphi
by Frank Borland,
24. Feb 2006
InsertSQL.Strings = (
'insert into AUT'
' (ID, AUT, VF, FUNKTION, FIRMA1, FIRMA2, STRASSE, PLZ, ORT, LAN' +
'D, TEL, '
' TELPRIV, FAX, ANM, DATUM, TYP)'
'values'
' (:ID, :AUT, :VF, :FUNKTION, :FIRMA1, :FIRMA2, :STRASSE, :PLZ, ' +
':ORT, :LAND, '
Forum: Datenbanken
Delphi
by Frank Borland,
24. Feb 2006
entweder mit after insert
ALTER TRIGGER AUT_BI0
ACTIVE AFTER INSERT POSITION 0
AS
begin
new.ID = gen_id(gen_aut_id,1);
end
Forum: Datenbanken
Delphi
by Frank Borland,
24. Feb 2006
endlich, das wurde auch Zeit :-D
Das ist völlig korrekt, ID ist not null definiert, das hatten wir aber schon:
CREATE TABLE AUT (ID INTEGER NOT NULL ...
Also muss das Feld beim insert einen Wert haben. Der Trigger wird ihn überbügeln...
Forum: Datenbanken
Delphi
by Frank Borland,
24. Feb 2006
Der Trigger kommt schon alleine klar. Da das Feld not null definiert ist musst Du einen Wert mitgeben. Hier bietet sich bei integer- Feldern (z.B.) -1 an, da kann jeder beim 1. Versuch sehen, ob der Generator anspringt.
Andererseits könntest Du im Trigger darauf reagieren, woher die Daten kommen, z.B.IF (OLD.ID=-1) THEN...
Gruß
Malte
Forum: Datenbanken
Delphi
by Frank Borland,
24. Feb 2006
Moin, moin,
3 Fragen beim Lesen:
TDatenModul.IBDataSet_AUTBeforeInsert(DataSet: TDataSet) und TRIGGER AUT_BI0
warum benutzt Du nicht das übergebene Dataset, wie ist der Status von IBDataSet_AUT beim Verlassen der Funktion und warum das Alles wenn es TRIGGER AUT_BI0 gibt?
DatenModul.IBDataSet_AUT.Insert();