AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

firebird Trigger

Ein Thema von khh · begonnen am 4. Dez 2008 · letzter Beitrag vom 5. Dez 2008
Antwort Antwort
Seite 2 von 3     12 3      
mkinzler
(Moderator)

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

Re: firebird Trigger

  Alt 4. Dez 2008, 16:55
Nein, denn Profis wissen das halt, wir blöden Amateure brauchen das gar nicht zu wissen
Markus Kinzler
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#12

Re: firebird Trigger

  Alt 4. Dez 2008, 17:47
Zitat von Hansa:
Beim Anlegen neuer Tabellenfelder ist rechts eine Checkbox Autoinc. Wird die gecheckt, dann kann man für dieses Feld einen Generator anlegen oder existierenden benutzen.

Zitat von mkinzler:
Also ich lege immer pro Tabelle (für den PK) einen an.
Macht man wohl zuerst intuitiv so. Danach aus Angewohnheit, oder um Zahlen zu "sparen". Kennt man sich einigermaßen aus, dann sollte man sich das aber besser wieder abgewöhnen. Im Normalfall dürfte es keine Auswirkungen haben, aber für Profis in der Praxis irgendwann mächtig Ärger bedeuten.

willst du damit sagen, du legst einen trigger für _alle_ tabellen einer DB an ?


Gruss KH
Karl-Heinz
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#13

Re: firebird Trigger

  Alt 4. Dez 2008, 17:49
Nicht einen Trigger, sondern einen Generator.
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
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#14

Re: firebird Trigger

  Alt 4. Dez 2008, 17:50
Zitat von DeddyH:
Nicht einen Trigger, sondern einen Generator.
ach soooo,
hab mich gerade gewundert wie das geht


naja einen Generator in allen Triggern zu verwenden, ist gar keine schlechte Idee.
Die erledigen ja eh alle die gleiche Arbeit.


Gruss KH
Karl-Heinz
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: firebird Trigger

  Alt 4. Dez 2008, 19:09
Dafür hast du dann einen Nummernkreis für alle deine Tabellen
Markus Kinzler
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#16

Re: firebird Trigger

  Alt 4. Dez 2008, 19:16
Zitat von mkinzler:
Dafür hast du dann einen Nummernkreis für alle deine Tabellen
Das ist zum Beispiel dann vorteilhaft, wenn alle Entitäten im Programm in einer einfachen Persistenzschicht (O/R Mapper) verwaltet werden sollen, dann ist die ID aus der Datenbank immer auch als Key in der Persistenzschicht brauchbar, keine Kollisionsgefahr und sehr einfache Anlage von neuen Objekten mit eindeutiger ID.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
khh

Registriert seit: 18. Apr 2008
Ort: Südbaden
1.929 Beiträge
 
FreePascal / Lazarus
 
#17

Re: firebird Trigger

  Alt 4. Dez 2008, 19:28
Zitat von mkinzler:
Dafür hast du dann einen Nummernkreis für alle deine Tabellen
mh, stimmt, der merkt sich ja die Werte, wobei für ne einfache id kanns ja egal sein.


EDIT:

nee ist glaube ich doch keine so gute idee,
ich wäre mal auf die Ausführung von hansa gespannt, was für einen Ärger er da meint.


Gruss KH
Karl-Heinz
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#18

Re: firebird Trigger

  Alt 4. Dez 2008, 19:53
Zitat von mkinzler:
...Amateure brauchen das gar nicht zu wissen
Yes indead, so isset. Aber ganz unwichtig ist es nicht. Weil es im Thema um Trigger ging und nicht um Generatoren, wollte ich hier auch nicht weiter darauf eingehen, aber was solls :

Warum pro Table einen eigenen Generator ?
Das weiß der Kuckuck. Kommt wohl lediglich daher, dass immer von einem Generator/Trigger "Gespann" gesprochen wird. Das alleine schon suggeriert x Tabellen = x Generatoren. Ein theoretisches Argument wäre die Anzahl der Generatorenwerte.

Zitat von Firebird-Doku:
Generatoren speichern und liefern 64-bit Integerwerte in allen Firebird-Versionen. Dies ergibt einen Wertebereich von:

-263 .. 263-1 oder -9,223,372,036,854,775,808 .. 9,223,372,036,854,775,807

Würde man also einen Generator mit Startwert 0 benutzen, um damit eine NUMERIC(18) oder BIGINT-Spalte zu befüllen, und man würde 1000 neue Datensätze pro Sekunde anlegen, dann würde es etwa 300 Millionen Jahre (!) dauern bevor der Generator überläuft. Da es eher unwahrscheinlich ist, dass die Menschheit dann noch auf diesem Planeten herumläuft (und immer noch Firebird-Datenbanken einsetzt), braucht man sich darüber also nicht wirklich Gedanken machen.
Reicht das als Info ? Hat noch einer ein Argument für ein solches Vorgehen, dann soll er es sagen. Mir fallen jetzt nur die Telekom-Verbindungsdaten ein (in Betracht kommen eigentlich nur maschinelle Inserts und keine manuellen), die eventuell mit einem Generator, der eine integer-ID bestückt Ärger kriegen könnten. Für die gäbe es dann eben Bigint.

Warum pro Table keinen eigenen Generator, sondern nur einen ?

Es geht um die bestmögliche referentielle Integrität der DB und zwar darum, diese auch langfristig zu sichern.

Bleiben wir mal bei der Telekom : angenommen die speichern die Verbindungsdaten in 10 Rechenzentren und in regelmäßigen Abständen sollen die Daten zentral gespeichert werden. Die dürfen sich natürlich nicht ins Gehege kommen. Die Rechenzentren haben jeweils einen Generator-Startwert von 0 dann 1.000.000.000.000.000 bis 9.000.000.000.000.000. Dürfte reichen und es ist sogar noch mehr Platz. Und jetzt ? Selbst wenn unterschiedliche Rechenzentren die Daten von ein und demselben Kunden erfassen und diese dann zusammengewürfelt werden, dann ist noch immer alles in Ordnung.

Würde man das anders machen, dann wären die IDs nicht mehr eindeutig zuzuordnen. Es wäre nicht mal ein permanenter Datenabgleich nötig. Und der Fragesteller braucht sich nur einmal den Namen des Generators zu merken.

P.S. wg. roter Kasten : die "Nummernkreise" sind da schon indirekt drin. Sollte es bei den 10 Rechenzentren gleiche Rechn.Nummern etc. geben und die Daten müssten erst später zusammengeführt werden, dann ist es ein leichtes einmalig eine 0..9 davorzuhängen und fertig. Die IDs müssen aber bleiben wie sie sind.
Gruß
Hansa
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: firebird Trigger

  Alt 4. Dez 2008, 20:04
Wenn die Inhalte der Tabellen aber verschieden ist, stellt das kein Problem dar.
Markus Kinzler
  Mit Zitat antworten Zitat
Hansa

Registriert seit: 9. Jun 2002
Ort: Saarland
7.554 Beiträge
 
Delphi 8 Professional
 
#20

Re: firebird Trigger

  Alt 4. Dez 2008, 20:17
Du willst das wohl nicht verstehen ? Der Nutz-Inhalt der Tabellen (also der für das Programm gedachte) ist ziemlich egal, solange nur die DB-interne ID eindeutig ist. Und genau die sollte eben nicht manipuliert werden.
Gruß
Hansa
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 14:27 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