Start · Sprachen · PHP · Referenz · db2_special_columns

db2_special_columns

Funktion

Liefert ein Ergebnis-Ressource mit den eindeutigen Zeilenkennungsspalten (ROWID-Spalten) einer Tabelle in einer IBM DB2-Datenbank.

seit PHP 5.1.0 Kategorie: db

Signatur

db2_special_columns(resource $connection, string|null $qualifier, string $schema, string $table_name, int $scope): resource|false

Beschreibung

db2_special_columns() gibt Informationen über Spalten zurück, die eine Zeile in einer Tabelle eindeutig identifizieren. Typischerweise sind dies Primärschlüssel oder andere eindeutige Bezeichner, die dazu genutzt werden können, eine bestimmte Zeile schnell wiederzufinden oder zu aktualisieren.

Die Funktion gibt eine Ergebnis-Ressource zurück, die anschließend mit Funktionen wie db2_fetch_assoc(), db2_fetch_array() oder db2_fetch_object() ausgelesen werden kann. Jede zurückgegebene Zeile beschreibt eine solche Identifizierungsspalte mit Metadaten wie Spaltenname, Datentyp, Länge und Skalierung.

Der Parameter scope steuert, für welchen Nutzungsrahmen die Informationen gelten sollen: entweder nur für die aktuelle Transaktion (SQL_SCOPE_CURROW = 0) oder für die gesamte Sitzung (SQL_SCOPE_TRANSACTION = 1). Diese Funktion ist besonders nützlich beim Aufbau generischer Datenbankabstraktionsschichten oder bei der Introspektierung von Tabellenstrukturen.

Wenn die Funktion keine Spalten findet oder ein Fehler auftritt, gibt sie false zurück. Es empfiehlt sich daher, das Ergebnis stets auf false zu prüfen, bevor es weiterverarbeitet wird.

Parameter

Name Typ Default Beschreibung
$connection Pflicht resource Eine aktive IBM DB2-Verbindungs-Ressource, die zuvor mit db2_connect() oder db2_pconnect() erstellt wurde.
$qualifier Pflicht string|null Ein Qualifier für DB2-Datenbanken unter OS/390 oder z/OS. Bei anderen Plattformen null oder einen leeren String übergeben.
$schema Pflicht string Das Schema, in dem die Tabelle liegt. Ein leerer String durchsucht alle Schemas. Wildcards wie % werden unterstützt.
$table_name Pflicht string Der Name der Tabelle, deren eindeutige Zeilenkennungsspalten abgefragt werden sollen.
$scope Pflicht int Gibt den minimalen Gültigkeitsbereich der ROWID an. Mögliche Werte: 0 (SQL_SCOPE_CURROW) für die aktuelle Zeile, 1 (SQL_SCOPE_TRANSACTION) für die aktuelle Transaktion, 2 (SQL_SCOPE_SESSION) für die gesamte Sitzung.

Rückgabewert

Typ
resource|false
Beschreibung
Gibt bei Erfolg eine Ergebnis-Ressource zurück, die mit db2_fetch_assoc() oder ähnlichen Funktionen ausgelesen werden kann. Im Fehlerfall oder wenn keine passenden Spalten gefunden wurden, wird false zurückgegeben.

Beispiele

Eindeutige Zeilenkennungsspalten einer Tabelle auflisten

<?php
$conn = db2_connect('SAMPLE', 'db2user', 'geheimesPasswort');

if ($conn) {
    // Scope 1 = SQL_SCOPE_TRANSACTION
    $result = db2_special_columns($conn, null, 'DB2ADMIN', 'EMPLOYEES', 1);

    if ($result === false) {
        echo 'Fehler: ' . db2_stmt_errormsg();
    } else {
        while ($row = db2_fetch_assoc($result)) {
            echo 'Spalte: ' . $row['COLUMN_NAME'] . PHP_EOL;
            echo 'Typ:    ' . $row['TYPE_NAME']   . PHP_EOL;
            echo 'Länge:  ' . $row['COLUMN_SIZE'] . PHP_EOL;
            echo '---' . PHP_EOL;
        }
    }
    db2_close($conn);
} else {
    echo 'Verbindung fehlgeschlagen: ' . db2_conn_errormsg();
}
?>
Spalte: EMPNO Typ: INTEGER Länge: 10 ---

Prüfung ob eine Tabelle eine ROWID-Spalte besitzt

<?php
$conn = db2_pconnect('SAMPLE', 'db2user', 'geheimesPasswort');

if ($conn) {
    $result = db2_special_columns($conn, null, 'DB2ADMIN', 'ORDERS', 0);

    $found = false;
    if ($result !== false) {
        while ($row = db2_fetch_assoc($result)) {
            if (!empty($row['COLUMN_NAME'])) {
                $found = true;
                break;
            }
        }
    }

    echo $found
        ? 'Tabelle besitzt eine eindeutige Zeilenkennungsspalte.'
        : 'Keine eindeutige Zeilenkennungsspalte gefunden.';
}
?>
Tabelle besitzt eine eindeutige Zeilenkennungsspalte.

// Wichtig · Fallstricke

Verfügbarkeit: db2_special_columns() ist nur verfügbar, wenn die ibm_db2-Erweiterung installiert und aktiviert ist. Diese ist standardmäßig nicht in PHP enthalten.

Spalten im Ergebnis: Die zurückgegebene Ergebnis-Ressource enthält typischerweise folgende Felder: SCOPE, COLUMN_NAME, DATA_TYPE, TYPE_NAME, COLUMN_SIZE, BUFFER_LENGTH, DECIMAL_DIGITS und PSEUDO_COLUMN.

Groß-/Kleinschreibung: Schema- und Tabellennamen sind auf manchen DB2-Systemen case-sensitiv. Im Zweifel Großbuchstaben verwenden, da DB2 Bezeichner intern häufig in Großschreibung speichert.