AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Autowerte bei Firebird setzen
Thema durchsuchen
Ansicht
Themen-Optionen

Autowerte bei Firebird setzen

Ein Thema von FBrust · begonnen am 10. Jun 2005 · letzter Beitrag vom 14. Jun 2005
Antwort Antwort
Robert_G
(Gast)

n/a Beiträge
 
#1

Re: Autowerte bei Firebird setzen

  Alt 10. Jun 2005, 19:41
Zitat von marabu:
Ich habe immer einen solchen Trigger - und benutze ihn dann nicht. Der Trigger dient bei mir nur der Unterstützung von bulk-load Operationen. Den ID für single record inserts hole ich mir vom Generator und setze ihn in der Anwendung. Auf diese Weise habe ich die ID für meinen Programm-Kontext. Echte AutoInc-Felder machen bei primary key Feldern mehr Probleme als Freude.
Interssant ist die Geschichte von Interbase. eines der ersten "Features", die Borland in IB nach der Übernahme "eingebaut" hatte, war das Entfernen von rüggabewerten aus DML Statements...
Seitdem muss man tatsächlich so vorgehen, wie du es beschrieben hast. In Ora mache ich es meist so:

Delphi-Quellcode:
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;
Die ID bekomme ich so:
insert into X (a,b) values (:a,:b) returning id into :id; Wenn man die Cache size der sequence passend wählt macht es sich auch in großen bulk inserts nicht wirklich bemerkbar.
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?
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:26 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 by Thomas Breitkreuz