Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 11.0.1 (Deutsch) » SQL Anywhere Server - SQL-Referenzhandbuch » Verwendung von SQL » SQL-Funktionen » SQL-Funktionen (P-Z)

 

ROWID-Funktion [Verschiedene]

Gibt einen 64-Bit-Wert ohne Vorzeichen zurück, der eine Zeile in einer Tabelle eindeutig identifiziert

Syntax
ROWID( Korrelationsname )
Parameter
  • 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.

Rückgabe

UNSIGNED BIGINT

Bemerkungen

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.

Siehe auch
Standards und Kompatibilität
  • SQL/2003   Erweiterung des Herstellers

Beispiel

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';