AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird 2.x und Autoincrement
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird 2.x und Autoincrement

Ein Thema von webcss · begonnen am 6. Nov 2007 · letzter Beitrag vom 6. Nov 2007
Antwort Antwort
Seite 1 von 2  1 2      
webcss

Registriert seit: 10. Feb 2006
255 Beiträge
 
Delphi XE2 Professional
 
#1

Firebird 2.x und Autoincrement

  Alt 6. Nov 2007, 17:54
Datenbank: Firebird • Version: 2.0.3 • Zugriff über: uib native + OO-Layer
Hallo DP'ler,

nur mal so:
Seit Firebird version 2.0 existiert ja eine alternative Syntax für Autoincrement-Werte,

also statt select Gen_ID(GEN_Feld_ID,1) from RDB$Database geht jetzt auch select next value for Gen_FELD_ID wobei Gen_Feld_ID natürlich der Generator-Bezeichner ist.

Ist es eine gute Praxis, anstelle wie bisher den Generator in einem Before-Insert trigger abzufragen,
den wert mittels der neuen syntax als default-Wert im Feld der jeweiligen tabelle selbst zu definieren?

Würde auf den ersten Blick zumindest so manchen Trigger sparen, oder?

Meinungen wie immer willkommen...
"Wer seinem Computer Mist erzählt, muss immer damit rechnen..." (unbekannt)
"Der Computer rechnet damit, dass der Mensch denkt..." (auch unbekannt)
mein blog
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Firebird 2.x und Autoincrement

  Alt 6. Nov 2007, 18:02
Lies Dir mal diesen Thread durch.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von mschaefer
mschaefer

Registriert seit: 4. Feb 2003
Ort: Hannover
2.029 Beiträge
 
Delphi XE3 Enterprise
 
#3

Re: Firebird 2.x und Autoincrement

  Alt 6. Nov 2007, 18:05
Moin, Spätmoin,

Zunächst würde ich das nur als Klärung des Syntax sehen um die interne Tabelle endlich zu vermeiden. Neige dazu den Wert wie bisher vorher zu holen und im Feld des Datasets zu halten bis der Record geschrieben wird. Dann hat jede Clientanwendung automatisch einen eindeutigen Schlüssel. Damit ergibt sich übrigens ein relativ ähnlicher Syntax zu den PostGreeSQL Sequences.

Grüße // Martin
Martin Schaefer
Phaeno
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Firebird 2.x und Autoincrement

  Alt 6. Nov 2007, 18:08
Der große Vorteil von FB >=2 ist das RETURNING
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.541 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Firebird 2.x und Autoincrement

  Alt 6. Nov 2007, 18:12
Deshalb hatte ich auch direkt auf #5 gelinkt
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: Firebird 2.x und Autoincrement

  Alt 6. Nov 2007, 18:17
Zitat:
Zunächst würde ich das nur als Klärung des Syntax sehen um die interne Tabelle endlich zu vermeiden.
Wurde wegen Aufnahme von Sequenzen in SQL-Standard eingeführt. Was meinst du mit interner Tabelle?
Zitat:
Neige dazu den Wert wie bisher vorher zu holen und im Feld des Datasets zu halten bis der Record geschrieben wird.
Kommt darauf an. wenn man den Wert vorher holt und dann die Daten verwirft, können Lücken entsehen.
Markus Kinzler
  Mit Zitat antworten Zitat
webcss

Registriert seit: 10. Feb 2006
255 Beiträge
 
Delphi XE2 Professional
 
#7

Re: Firebird 2.x und Autoincrement

  Alt 6. Nov 2007, 18:25
hilft mir alles bisher nur wenig weiter

bei mir ist halt so das ich alle user eingaben erstmal in internen objekten halte und dann, bei positiver übernahme, in einem rutsch in die DB schreibe und mit returning den ID-wert zurückhole.
ID wird bei mir nur intern verwendet um PK/FK Konsistenzen zur gewähren, da fummelt kein user rum

Also nochmal, ist's sinnvoll denn wert als default direkt in der tabelle/feld zu definieren oder doch lieber wie bisher im trigger?
"Wer seinem Computer Mist erzählt, muss immer damit rechnen..." (unbekannt)
"Der Computer rechnet damit, dass der Mensch denkt..." (auch unbekannt)
mein blog
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: Firebird 2.x und Autoincrement

  Alt 6. Nov 2007, 18:28
Je nach Trigger kommt das ja auf das Gleiche raus.
Markus Kinzler
  Mit Zitat antworten Zitat
webcss

Registriert seit: 10. Feb 2006
255 Beiträge
 
Delphi XE2 Professional
 
#9

Re: Firebird 2.x und Autoincrement

  Alt 6. Nov 2007, 18:31
Zitat von mkinzler:
Je nach Trigger kommt das ja auf das Gleiche raus.
sicher, aber wenn ich nur einen triger für eine tabelle xxx habe und den nur um eine sequenz zu erzeugen, könnte ich mir den auch noch sparen wenn ich die generierung als default wert setzte, das meine ich.
"Wer seinem Computer Mist erzählt, muss immer damit rechnen..." (unbekannt)
"Der Computer rechnet damit, dass der Mensch denkt..." (auch unbekannt)
mein blog
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#10

Re: Firebird 2.x und Autoincrement

  Alt 6. Nov 2007, 18:34
Ja und nein. mit einem trigger könntest du sicherstellen, dass die ID immer mit dem Generator erzeugt wird, währrend der DEFAULT-Wert nur bei fehlendem PK zur Anwendung kommt.
Markus Kinzler
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 09:06 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz