Start · Sprachen · PHP · Referenz · cubrid_commit

cubrid_commit

Funktion

Bestätigt (committet) die aktuelle Transaktion auf einer CUBRID-Datenbankverbindung und macht alle Änderungen dauerhaft.

seit PHP 8.3.1 Kategorie: db

Signatur

cubrid_commit(resource $conn_identifier): bool

Beschreibung

cubrid_commit() schließt eine laufende Transaktion auf der angegebenen CUBRID-Verbindung erfolgreich ab und schreibt alle seit dem letzten Commit oder Rollback vorgenommenen Datenänderungen dauerhaft in die Datenbank. Nach dem Aufruf beginnt automatisch eine neue Transaktion.

Standardmäßig arbeitet CUBRID im Auto-Commit-Modus. Wenn der Auto-Commit-Modus deaktiviert ist (z. B. über cubrid_set_autocommit()), müssen Transaktionen explizit mit cubrid_commit() bestätigt oder mit cubrid_rollback() zurückgerollt werden.

Ein typischer Anwendungsfall ist die sichere Durchführung von zusammengehörenden Datenbankoperationen (z. B. Überweisungen oder mehrstufige Einfügeoperationen), die entweder alle oder gar nicht angewendet werden sollen. Tritt ein Fehler auf, kann stattdessen cubrid_rollback() aufgerufen werden, um alle Änderungen der Transaktion rückgängig zu machen.

Es ist empfehlenswert, nach allen abgeschlossenen Arbeitsblöcken immer explizit zu committen oder zu rollbacken, um Ressourcen freizugeben und sicherzustellen, dass keine offenen Transaktionen verbleiben.

Parameter

Name Typ Default Beschreibung
$conn_identifier Pflicht resource Die CUBRID-Verbindungsressource, die zuvor mit cubrid_connect() oder cubrid_connect_with_url() geöffnet wurde.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der Commit erfolgreich war, andernfalls false (z. B. bei einer ungültigen Verbindungsressource oder einem Datenbankfehler).

Beispiele

Einfacher Commit nach einer INSERT-Operation

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

// Auto-Commit deaktivieren
cubrid_set_autocommit($conn, CUBRID_AUTOCOMMIT_FALSE);

$req = cubrid_execute($conn, "INSERT INTO orders (product, quantity) VALUES ('Widget', 5)");

if ($req) {
    cubrid_commit($conn);
    echo "Transaktion erfolgreich committed.";
} else {
    cubrid_rollback($conn);
    echo "Fehler – Transaktion zurückgerollt.";
}

cubrid_disconnect($conn);
?>
Transaktion erfolgreich committed.

Transaktion mit mehreren Operationen und Fehlerbehandlung

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

try {
    $ok1 = cubrid_execute($conn, "UPDATE accounts SET balance = balance - 100 WHERE id = 1");
    $ok2 = cubrid_execute($conn, "UPDATE accounts SET balance = balance + 100 WHERE id = 2");

    if ($ok1 && $ok2) {
        cubrid_commit($conn);
        echo "Überweisung erfolgreich abgeschlossen.";
    } else {
        cubrid_rollback($conn);
        echo "Eine Operation ist fehlgeschlagen – Rollback durchgeführt.";
    }
} catch (Exception $e) {
    cubrid_rollback($conn);
    echo "Ausnahme: " . $e->getMessage();
} finally {
    cubrid_disconnect($conn);
}
?>
Überweisung erfolgreich abgeschlossen.

// Wichtig · Fallstricke

Auto-Commit-Modus: Ist der Auto-Commit-Modus aktiv (Standardeinstellung), wird jede SQL-Anweisung automatisch committed. Ein manueller Aufruf von cubrid_commit() ist dann nicht erforderlich, aber auch nicht schädlich.

Ressourcen-Management: Offene, nicht committete Transaktionen können andere Verbindungen blockieren (Sperren). Achte darauf, Transaktionen immer explizit zu beenden, insbesondere in lang laufenden Skripten.

Rückgabewert prüfen: Der Rückgabewert von cubrid_commit() sollte stets geprüft werden, da ein fehlgeschlagener Commit auf ein schwerwiegendes Datenbankproblem hinweist.