Einzelnen Beitrag anzeigen

Benutzerbild von IBExpert
IBExpert

Registriert seit: 15. Mär 2005
646 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Firebird DB Datensatz über RDB$DB_KEY finden

  Alt 24. Feb 2022, 11:04
vielleicht zum verständnis:

jede tabelle hat für jeden datensatz einen wert für rdb$db_key, der ist immer binär eindeutig
pro Datensatz und ist zB für die Indizes erforderlich. In einem Index befindet sich zB ein
Wert und dazu dann die liste der rdb$db_key werte, die zu diesem Wert in den Records zu
finden sind

das was ibexpert und andere tools da als Darstellung benutzen entspricht dem Inhalt,
vor dem Doppelpunkt ist eine konstante pro Tabelle (ist im Prinzip die RDB$RELATION_ID
in RDB$RELATIONS). Wenn da zb 129 steht ist die Tabelle dort mit der ID 129 gespeichert.

wenn Ihr eine tabelle habt mit zB char(1) a..z also 26 records, die nacheinander
in der reihenfolge per insert eingefügt werden, dann sieht das so aus als ob dahinter
dann 129:1, 129:2, ... 129:26 steht, was binär auch stimmt.

wenn ihr nun b..y löscht bleiben als sichtbare rdb$db_keys nur
129:1=a und 129:26=z übrig

und nach einem backup/restore werden die nun nur noch 2 records mit neuen rdb$db_keys
eingespielt
129:1=a und 129:2=z

nach dem restore werden auch die indizes neu erstell, haben also dann auch die richtigen
Werte

Für eine technische Anwendung ist außerhalb der internen Verwaltung, die Firebird damit macht,
die Nutzung vom rdb$db_key eine ziemlich unbrauchbare idee

Im Prinzip ist das sozusagen nichts anderes als die interne hausnummer jedes Records
die nur bis zum restore statisch ist
Holger Klemt
www.ibexpert.com - IBExpert GmbH
Oldenburger Str 233 - 26203 Wardenburg - Germany
IBExpert and Firebird Power Workshops jederzeit auch als Firmenschulung
  Mit Zitat antworten Zitat