Signatur
Beschreibung
cubrid_seq_drop entfernt ein einzelnes Element aus einer Sequence-Spalte (SEQ/SEQUENCE-Typ) in einer CUBRID-Datenbanktabelle. Das Zielelement wird über die OID des Datensatzes, den Spaltennamen sowie den 1-basierten Index innerhalb der Sequence identifiziert.
Sequence-Spalten in CUBRID sind geordnete, mehrwertige Spalten, die mehrere Werte desselben Typs speichern können – vergleichbar mit einem Array. Mit dieser Funktion lässt sich gezielt ein Element an einer bestimmten Position entfernen, ohne den gesamten Datensatz schreiben zu müssen.
Nach dem Löschen rücken alle nachfolgenden Elemente in der Sequence automatisch nach vorne, sodass der Index der Folgeelemente entsprechend angepasst wird. Die Funktion ist Teil der CUBRID-spezifischen OID-Manipulationsfunktionen und setzt eine aktive CUBRID-Datenbankverbindung voraus.
Typische Anwendungsfälle sind das Verwalten von geordneten Mehrfachwerten wie Telefonlisten, Taglisten oder anderen strukturierten Listendaten, die direkt in einer Spalte gespeichert werden.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $conn_identifier Pflicht | resource | Die CUBRID-Verbindungsressource, die von cubrid_connect oder cubrid_connect_with_url zurückgegeben wurde. |
|
| $oid Pflicht | string | Die OID (Object Identifier) des Datensatzes, dessen Sequence-Spalte bearbeitet werden soll. Format z. B. @620|1|1. |
|
| $attr_name Pflicht | string | Der Name der Sequence-Spalte in der Tabelle, aus der das Element gelöscht werden soll. | |
| $index Pflicht | int | Der 1-basierte Index des Elements innerhalb der Sequence, das gelöscht werden soll. Das erste Element hat den Index 1. |
Rückgabewert
true bei Erfolg zurück. Im Fehlerfall (z. B. ungültige OID, falscher Spaltenname oder Index außerhalb des gültigen Bereichs) wird false zurückgegeben.Beispiele
Element aus einer Sequence-Spalte löschen
<?php
// Verbindung zur CUBRID-Datenbank herstellen
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
if (!$conn) {
die('Verbindung fehlgeschlagen: ' . cubrid_error());
}
// OID eines Datensatzes ermitteln (z. B. über eine Abfrage)
$result = cubrid_execute($conn, "SELECT * FROM record WHERE id = 1");
$oid = cubrid_current_oid($result);
// Das zweite Element aus der Sequence-Spalte 'phone_numbers' löschen
$success = cubrid_seq_drop($conn, $oid, 'phone_numbers', 2);
if ($success) {
echo "Element erfolgreich aus der Sequence gelöscht.";
} else {
echo "Fehler beim Löschen: " . cubrid_error($conn);
}
cubrid_close($conn);
?>
Alle Elemente einer Sequence schrittweise löschen
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
// OID des Zieldatensatzes
$oid = '@620|1|1';
// Aktuelle Anzahl der Elemente in der Sequence ermitteln
$attr = cubrid_get($conn, $oid, 'tags');
$count = is_array($attr) ? count($attr) : 0;
// Elemente von hinten nach vorne löschen, um Indexverschiebungen zu vermeiden
for ($i = $count; $i >= 1; $i--) {
$result = cubrid_seq_drop($conn, $oid, 'tags', $i);
if ($result) {
echo "Element $i gelöscht.\n";
} else {
echo "Fehler beim Löschen von Element $i.\n";
}
}
cubrid_close($conn);
?>
// Wichtig · Fallstricke
Achtung beim Index: Der Index ist 1-basiert, nicht 0-basiert wie bei PHP-Arrays. Ein Index von 0 oder ein Index, der die aktuelle Länge der Sequence überschreitet, führt zu einem Fehler.
Indexverschiebung: Wenn mehrere Elemente nacheinander gelöscht werden, verschieben sich die Indizes der nachfolgenden Elemente. Um ungewollte Verschiebungen zu vermeiden, sollte man beim Löschen mehrerer Elemente von hinten nach vorne vorgehen (höchster Index zuerst).
Transaktion: In einer transaktionalen Umgebung sollte das Löschen von Sequence-Elementen innerhalb einer Transaktion erfolgen, um Datenkonsistenz sicherzustellen. Bei einem Fehler kann mit cubrid_rollback zurückgerollt werden.
Diese Funktion ist ausschließlich für CUBRID-Datenbanken verfügbar und ist nicht mit anderen Datenbanksystemen kompatibel.