Signatur
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
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);
?>
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);
?>
// 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().