Signatur
Beschreibung
cubrid_set_add ermöglicht es, einen einzelnen Wert zu einer Spalte vom Typ SET, MULTISET oder SEQUENCE in einer CUBRID-Datenbank hinzuzufügen, ohne den gesamten Datensatz neu schreiben zu müssen. Die Identifikation des Datensatzes erfolgt über seine OID (Object Identifier).
Diese Funktion ist besonders nützlich, wenn man mit collection-artigen Spalten in CUBRID arbeitet und einzelne Elemente effizient hinzufügen möchte, ohne vorher den kompletten Spalteninhalt lesen, verändern und zurückschreiben zu müssen. Dies spart Netzwerk- und Verarbeitungsaufwand.
Die OID kann beispielsweise durch cubrid_insert_id oder aus einem vorherigen cubrid_fetch-Aufruf gewonnen werden. Der hinzuzufügende Wert wird immer als Zeichenkette übergeben — für numerische oder andere Typen muss die entsprechende String-Repräsentation verwendet werden.
Die Funktion arbeitet direkt auf dem Server, sodass keine erneute vollständige SELECT/UPDATE-Sequenz notwendig ist. Sie eignet sich daher besonders für Szenarien, in denen häufig einzelne Elemente zu Mengen hinzugefügt werden müssen.
Parameter
| Name | Typ | Default | Beschreibung |
|---|---|---|---|
| $conn_identifier Pflicht | resource | Die aktive CUBRID-Verbindungsressource, die von cubrid_connect oder cubrid_connect_with_url zurückgegeben wurde. |
|
| $oid Pflicht | string | Die OID (Object Identifier) des Datensatzes, dessen Set-Spalte geändert werden soll. Hat die Form @pageid|slotid|volid, z. B. @620|1|0. |
|
| $attr_name Pflicht | string | Der Name der Set-Spalte (Attribut) in der Tabelle, zu der das Element hinzugefügt werden soll. | |
| $set_element Pflicht | string | Der Wert, der zur Set-Spalte hinzugefügt werden soll. Wird als Zeichenkette übergeben; numerische Werte müssen entsprechend als String dargestellt werden. |
Rückgabewert
true zurück, wenn das Element erfolgreich hinzugefügt wurde, oder false im Fehlerfall (z. B. ungültige OID, nicht vorhandenes Attribut oder Verbindungsproblem).Beispiele
Element zu einer SET-Spalte hinzufügen
<?php
// Verbindung zur CUBRID-Datenbank herstellen
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
if (!$conn) {
die('Verbindung fehlgeschlagen: ' . cubrid_error());
}
// OID eines vorhandenen Datensatzes (z. B. aus vorherigem INSERT oder SELECT)
$oid = '@620|1|0';
// Element 'PHP' zur SET-Spalte 'languages' des Datensatzes hinzufügen
$result = cubrid_set_add($conn, $oid, 'languages', 'PHP');
if ($result) {
echo "Element erfolgreich hinzugefügt.\n";
} else {
echo "Fehler beim Hinzufügen: " . cubrid_error($conn) . "\n";
}
cubrid_disconnect($conn);
?>
OID nach INSERT ermitteln und Set-Spalte befüllen
<?php
$conn = cubrid_connect('localhost', 33000, 'demodb', 'dba', '');
if (!$conn) {
die('Verbindung fehlgeschlagen.');
}
// Neuen Datensatz einfügen
$req = cubrid_execute($conn, "INSERT INTO developer (name, languages) VALUES ('Alice', {});");
if (!$req) {
die('INSERT fehlgeschlagen: ' . cubrid_error($conn));
}
// OID des zuletzt eingefügten Datensatzes abrufen
$oid = cubrid_insert_id($conn);
echo "Datensatz-OID: $oid\n";
// Mehrere Sprachen zur SET-Spalte hinzufügen
$languages = ['PHP', 'Python', 'JavaScript'];
foreach ($languages as $lang) {
if (cubrid_set_add($conn, $oid, 'languages', $lang)) {
echo "'$lang' hinzugefügt.\n";
} else {
echo "Fehler beim Hinzufügen von '$lang'.\n";
}
}
cubrid_disconnect($conn);
?>
// Wichtig · Fallstricke
Hinweis zur Typkonsistenz: Der als set_element übergebene String muss zum deklarierten Datentyp der Set-Spalte in der CUBRID-Tabelle kompatibel sein. Bei Typ-Inkonsistenzen kann die Funktion false zurückgeben, ohne eine aussagekräftige Fehlermeldung zu liefern — prüfen Sie in diesem Fall den Spaltentyp mit cubrid_schema.
Duplikate: Bei Spalten vom Typ SET werden Duplikate automatisch ignoriert; bei MULTISET hingegen werden gleiche Werte mehrfach gespeichert. Beachten Sie diesen Unterschied bei der Wahl des Spaltentyps.
Transaktionen: Operationen über OID-basierte Funktionen wie cubrid_set_add unterliegen dem üblichen Transaktionsmanagement von CUBRID. Bei Verwendung im Auto-Commit-Modus wird jede Änderung sofort festgeschrieben.