![]() |
Re: Autowerte bei Firebird setzen
Hallo,
dann schaue Dir mal die Feldbeschreibung an. Da wirst Du sehen, dass der Primary Key gesetzt wurde, sich die Datenbank also die Einstellung gemerkt hat. Wenn Du beim anlegen der DB halt AutoInc auswählst, ist das wohl das gleiche wie der Primary Key. Also ein eindeutiger Schlüssel, der nur einmal vorkommt. Ob Du nun diesen Schlüssel selber erstellst oder über einen Trigger dies machen lässt, bleibt im Grunde dir überlassen. Ich habe habe das Feld AutoInc im IBExpert nur gesehen, wenn du die Table bzw. das Feld anlegst, danach ist es wie schon gesagt nur über die Feldeigenschaften zu erkennen, in welchem Verhältnis was zu wem steht. Hast Du das Feld vielleicht mit dem "Not Null" verwechselt? |
Re: Autowerte bei Firebird setzen
Zitat:
Seitdem muss man tatsächlich so vorgehen, wie du es beschrieben hast. In Ora mache ich es meist so:
Delphi-Quellcode:
Die ID bekomme ich so:
create or replace trigger X_PkTrig
before INSERT or UPDATE ON SomeSchema.X -- rename New and Old, they could be used as table or column names ... REFERENCING New AS New$Rec Old AS Old$Rec for each row begin if Inserting then -- get next value from sequence SELECT SomeSchema.X_PkSeq.NextVal INTO :New$Rec.ID FROM dual; elsIf Updating then -- prevent changes of ID :New$Rec.ID := :Old$Rec.ID; end if; end SomeSchema.X_PkTrig;
SQL-Code:
Wenn man die Cache size der sequence passend wählt macht es sich auch in großen bulk inserts nicht wirklich bemerkbar. ;)
insert into X (a,b) values (:a,:b) returning id into :id;
Das schöne an der Methode ist, dass ich sie komplett automatisch ablaufen lassen kann. (Also die Erzeugung von Trigger/Sequence) :) btw: Seit wann kann FB Bulk DML? :gruebel: |
Re: Autowerte bei Firebird setzen
Hallo Albi,
Zitat:
Nun, wie gesagt, ich bau dann eben einen Trigger ein. Gruß Frank |
Re: Autowerte bei Firebird setzen
Moin, Spätmoin
Zitat:
Grüße // Martin |
Re: Autowerte bei Firebird setzen
Zitat:
Verpasse ihm eine Eigenschaft mit dem Generatornamen, überschreibe OnBeforePost und gut ist. ;) |
Re: Autowerte bei Firebird setzen
Tach Robert,
ja - genausowas habe ich dann auch gemacht (muß ja nicht gleich mit der Tür ins Haus fallen), aber leider muß ich jetzt immernoch bei jedem Dataset den SQL-Befehl für das holen des Trickers extra eintragen. Im Moment habe ich eine zusätzliche StringListe mit der Generator-Abfrage die im BeforePost über ein temporäres Dataset abläuft... Mir ist es also nich gelungen, daß so zu verallgemeinern, daß man einfach eine Eigenschaft GetGeneratorrBeforePost auf True setzt und gut. Das ist leider nervig. Grüße // Martin |
Re: Autowerte bei Firebird setzen
Ich hoffte, dass vielleicht noch ein paar mehr Infos kommen würden...
Ehrlich gesagt hoffe ich, dass ich das falsch verstanden habe. ;) Zitat:
Zitat:
|
Re: Autowerte bei Firebird setzen
Zitat:
|
Re: Autowerte bei Firebird setzen
Zitat:
Nur weil DU es nicht kapierst musst du nicht alle anderen als Vollidioten abstempeln. :roll: Zitat:
Zitat:
Wie man eindeutig zwischen den Zeilen herauslesen kann, steht mir deine arrogante Art, anderen deine Unwissenheit bekannt zu tun, mal wieder bis Oberkante Unterlippe. Wenn du in dem Thread weiter rumpupst vergeht mir ziemlich schnell die Lust daran. Ich glaube aber, dass das schade wäre. Denn man könnte hier sicherlich einige stupide Codezeilen und Nerven einsparen. ;) |
Re: Autowerte bei Firebird setzen
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:21 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz