Gibt einen 64-Bit-Wert ohne Vorzeichen zurück, der eine Zeile in einer Tabelle eindeutig identifiziert
ROWID( Korrelationsname )
Korrelationsname Der Korrelationsname einer in der Abfrage verwendeten Tabelle. Der Korrelationsname sollte sich auf eine Basistabelle, eine temporäre Tabelle, eine globale temporäre Tabelle oder eine Proxytabelle (nur zulässig, wenn der Proxyserver eine ähnliche Funktion unterstützt) beziehen. Das Argument der ROWID-Funktion sollte sich nicht auf eine Ansicht, eine abgeleitete Tabelle, einen allgemeinen Tabellenausdruck oder eine Prozedur beziehen.
UNSIGNED BIGINT
Gibt den Zeilenbezeichner der Zeile in der Tabelle zurück, der dem angegebenen Korrelationsnamen entspricht.
Der von der Funktion zurückgegebene Wert ist zwischen Abfragen nicht notwendigerweise konstant, weil auf der Datenbank durchgeführte Vorgänge zu Änderungen bei den Zeilenbezeichnern einer Tabelle führen können. Besonders die REORGANIZE TABLE-Anweisung kann zu Änderungen bei Zeilenbezeichnern führen. Zusätzlich können Zeilenbezeichner erneut verwendet werden, wenn eine Zeile gelöscht wurde. Daher sollten es Benutzer vermeiden, die ROWID-Funktion im Normalbetrieb zu verwenden, und stattdessen den Primärschlüsselwert zum Abruf verwenden. Es wird empfohlen, ROWID nur für Diagnosezwecke einzusetzen.
Auch wenn das Ergebnis dieser Funktion ein UNSIGNED BIGINT-Typ ist, haben die Ergebnisse von arithmetischen Operationen keine
besondere Bedeutung. So dürfen Sie beispielsweise nicht erwarten, wenn Sie einem Zeilenbezeichner 1 hinzufügen, dass Sie den
Zeilenbezeichner der nächsten Zeile erhalten. Überdies sind im Zusammenhang mit ROWID nur IN- und Gleichheitsprädikate als
Suchargument nutzbar. Nötigenfalls werden ROWID betreffende Prädikate, wie z.B. ROWID( T ) = Literal
dazu verwendet, um in einen 64-Bit-Wert vom Typ UNSIGNED INTEGER konvertiert zu werden. Wenn die Konvertierung nicht durchgeführt
werden kann, tritt eine Datenausnahme auf. Wenn der Wert von Literal ein ungültiger Zeilenbezeichner ist, ergibt das Vergleichsprädikat 'FALSE'.
Die ROWID-Funktion kann nicht in einer CHECK-Integritätsregel auf einer Tabelle oder Spalte verwendet werden, auch kann sie nicht im COMPUTE-Ausdruck für eine berechnete Spalte verwendet werden.
SQL/2003 Erweiterung des Herstellers
Die folgende Anweisung gibt den Zeilenbezeichner der Zeile in der Employees-Tabelle zurück, bei der 'ID' gleich 105 ist:
SELECT ROWID( Employees ) FROM Employees WHERE Employees.EmployeeID = 105; |
Die folgende Anweisung gibt eine Liste der Sperren auf Zeilen in der Employees-Tabelle zusammen mit dem Inhalt dieser Zeilen zurück:
SELECT * FROM sa_locks() S JOIN Employees WITH( NOLOCK ) ON ROWID( Employees ) = S.row_identifier WHERE S.table_name = 'Employees'; |
Kommentieren Sie diese Seite in DocCommentXchange. Senden Sie uns Feedback über diese Seite via E-Mail. |
Copyright © 2009, iAnywhere Solutions, Inc. - SQL Anywhere 11.0.1 |