Anmelden

View Full Version : SQL und RRN()



caltmann
30-04-09, 16:37
Hallo zusammen!

Satzadressierungen lassen sich auf der iSeries
ja mittels SQL gut per RRN() lösen
(SELECT RRN(DATEI) FROM DATEI )
Meines Wissens gibt es so etwas ja aber nicht
für andere SQL-Datenbanken (MSSQL, MYSQL,..),
oder doch und das Kind hat dort nur einen anderen Namen?
Ich kenne natürlich nicht alle DB-Typen,
so weit ich aber weiß, kommen wir in der SQL-Welt
um die manuelle Erstellung einer Spalte mit einer entsprechenden Nummerierung nicht herum.

Danke f. Infos/Korrekturen/Bestätigungen + lg
Chris

Fuerchau
30-04-09, 16:42
RRN() ist tatsächlich eine reine AS/400-Funktion und ausserdem NICHT SICHER.
Durch RGZPFM und Angabe einer LF als Sortierfolge kann sich die RRN verändern.
Bei TABLE's wird REUSEDLT(*YES) gesetzt, so dass es bei Wiederverwendung eines gelöschten Satzes zur selben RRN kommt.

Die RRN darf deshalb auch nicht als Verweis aus einer anderen Tabelle verwendet werden.
Ein "Select ... where RRN()=Fremdschluessel" führt immer zu einem Tablescan, da über RRN nicht direkt zugegriffen werden kann.

Für solche Zwecke eignen sich AutoNum-Felder oder SEQUENCE-Datenbereiche.
Die meisten anderen DB's unterstützten dieses auch.