Start · Sprachen · PHP · Referenz · cubrid_seq_put

cubrid_seq_put

Funktion

Aktualisiert ein einzelnes Element einer Sequence-Spalte in einer CUBRID-Datenbank anhand der OID des Datensatzes.

seit PHP 8.3.1 Kategorie: db

Signatur

cubrid_seq_put(resource $conn_identifier, string $oid, string $attr_name, int $index, string $seq_element): bool

Beschreibung

cubrid_seq_put() ermöglicht es, gezielt ein einzelnes Element innerhalb einer Sequence-Spalte eines CUBRID-Datensatzes zu überschreiben. Dabei wird der Datensatz über seine OID (Object Identifier) adressiert, und das zu aktualisierende Element wird über seinen 1-basierten Index innerhalb der Sequence identifiziert.

Sequence-Spalten in CUBRID sind geordnete, mehrwertige Attribute – ähnlich einem Array. Mit dieser Funktion können einzelne Positionen gezielt geändert werden, ohne die gesamte Sequenz neu schreiben zu müssen. Das ist besonders dann nützlich, wenn Sequences sehr groß sind und nur ein bestimmter Wert korrigiert werden soll.

Wichtig: Der Index ist 1-basiert, d. h. das erste Element hat den Index 1. Liegt der angegebene Index außerhalb des gültigen Bereichs der Sequence, gibt die Funktion false zurück und ein Fehler tritt auf.

Diese Funktion ist ausschließlich für die CUBRID-Datenbank konzipiert und erfordert eine aktive Verbindung sowie einen gültigen OID-String des betreffenden Datensatzes.

Parameter

Name Typ Default Beschreibung
$conn_identifier Pflicht resource Die CUBRID-Verbindungsressource, wie sie von cubrid_connect() oder cubrid_connect_with_url() zurückgegeben wird.
$oid Pflicht string Die OID (Object Identifier) des Datensatzes, dessen Sequence-Spalte geändert werden soll. Die OID hat typischerweise das Format @PAGEID|SLOTID|VOLID.
$attr_name Pflicht string Der Name der Sequence-Spalte (Attribut), in der das Element aktualisiert werden soll.
$index Pflicht int Der 1-basierte Index des Elements innerhalb der Sequence, das überschrieben werden soll. Der erste Eintrag hat den Index 1.
$seq_element Pflicht string Der neue Wert, der an der angegebenen Position in die Sequence geschrieben werden soll.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn das Element erfolgreich aktualisiert wurde. Bei einem Fehler (z. B. ungültiger Index, ungültige OID oder Verbindungsproblem) wird false zurückgegeben.

Beispiele

Element einer Sequence-Spalte per OID aktualisieren

<?php
// Verbindung zur CUBRID-Datenbank herstellen
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');

if (!$conn) {
    die('Verbindung fehlgeschlagen: ' . cubrid_error());
}

// OID des Datensatzes ermitteln (z. B. über eine Abfrage)
$req = cubrid_execute($conn, "SELECT * FROM demo_tbl WHERE id = 1", CUBRID_INCLUDE_OID);
$oid = cubrid_current_oid($req);

// Das zweite Element der Sequence-Spalte 'tags' aktualisieren
$result = cubrid_seq_put($conn, $oid, 'tags', 2, 'neuer-wert');

if ($result) {
    echo "Element erfolgreich aktualisiert.";
} else {
    echo "Fehler beim Aktualisieren: " . cubrid_error($conn);
}

cubrid_close_request($req);
cubrid_disconnect($conn);
?>
Element erfolgreich aktualisiert.

Sequence-Element nach Einfügen eines neuen Datensatzes setzen

<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');

if (!$conn) {
    die('Verbindung fehlgeschlagen.');
}

// Neuen Datensatz mit Sequence-Spalte anlegen
$req = cubrid_execute($conn, "INSERT INTO product_list (name, features) VALUES ('Widget', SEQUENCE('alt1', 'alt2', 'alt3'))", CUBRID_INCLUDE_OID);
$oid = cubrid_current_oid($req);
cubrid_close_request($req);

// Das dritte Feature (Index 3) in 'features' überschreiben
$updated = cubrid_seq_put($conn, $oid, 'features', 3, 'verbessert');

if ($updated) {
    echo "Feature an Position 3 wurde auf 'verbessert' gesetzt.";
} else {
    echo "Aktualisierung fehlgeschlagen: " . cubrid_error($conn);
}

cubrid_disconnect($conn);
?>
Feature an Position 3 wurde auf 'verbessert' gesetzt.

// Wichtig · Fallstricke

Index ist 1-basiert: Im Gegensatz zu PHP-Arrays beginnt der Index bei CUBRID-Sequences bei 1. Ein Index von 0 ist ungültig und führt zu einem Fehler.

OID-Gültigkeit: Die OID muss zu einem tatsächlich existierenden Datensatz gehören. Veraltete oder fehlerhafte OIDs führen zu einem Laufzeitfehler. OIDs können sich bei bestimmten Datenbankoperationen (z. B. VACUUM) ändern.

Diese Funktion ist ausschließlich für Sequence-Spalten (SEQUENCE-Typ in CUBRID) geeignet. Für Set- oder Multiset-Spalten existieren eigene Funktionen wie cubrid_set_add().