Was ist eigentlich ROWID und RECID? Können wir RECID anstelle von ROWID verwenden?
Antworten
Zu viele Anzeigen?Beide RECID y ROWID sind eindeutige Zeiger auf einen bestimmten Datensatz in der Datenbank.
Beides sind mehr oder weniger physische Zeiger in die Datenbank selbst, außer für Nicht-OpenEdge-Tabellen, für die es keine Entsprechung auf der zugrunde liegenden Plattform gibt. In diesen Fällen kann er aus den Werten bestehen, die den Primärschlüssel bilden.
RECIDs sind bis 10.1A 32-Bit-Ganzzahlen und waren in Ordnung, als die Datenbank eine OpenEdge-Datenbank war und nur einen Bereich hatte. Ab 10.1B wurden sie auf 64-Bit-Ganzzahlen umgestellt.
In v6 wurde die Möglichkeit hinzugefügt, sich mit Nicht-OpenEdge-Datenbanken zu verbinden, und in v8, OpenEdge-Datenbanken mit mehr als einem Speicherbereich zu erstellen. Zu diesem Zeitpunkt reichten die RECIDs nicht mehr aus, um alle Datensätze in einer Tabelle unter allen Umständen eindeutig zu adressieren.
So wurde die ROWID-Struktur geboren. Ihre tatsächliche Architektur hängt von der Art der zugrunde liegenden Datenbank ab, aber sie leidet nicht unter den Einschränkungen, die eine Ganzzahl mit sich bringt.
Die Dokumentation ist ziemlich eindeutig und besagt dass RECIDs in Zukunft nicht mehr verwendet werden sollten mit Ausnahme von Code, der das Metaschema der OpenEdge-Datenbank manipuliert.
RECID ist seit ein paar Versionen veraltet. ROWID ist der Ersatz dafür. Soweit ich weiß, ist das, was es zurückgibt, die physische Adresse des DB-Blocks, der Ihren Datensatz enthält. Soweit ich mich erinnere, wurde ROWID eingeführt, als man verschiedene DB-Engines - Oracle / SQL Server usw. - von der 4GL unterstützen wollte, was bedeutet, dass eine ROWID mehr enthält als eine RECID.
Ich würde mich von RECID fernhalten. Kurzfristig kommen Sie vielleicht damit durch, aber Sie schaffen sich damit ein potenzielles Problem, das Sie ganz vermeiden könnten.