Start · Sprachen · PHP · Referenz · cubrid_set_autocommit

cubrid_set_autocommit

Funktion

Setzt den Autocommit-Modus einer CUBRID-Datenbankverbindung auf aktiviert oder deaktiviert.

seit PHP 8.4.0 Kategorie: db

Signatur

cubrid_set_autocommit(resource $conn_identifier, bool $mode): bool

Beschreibung

cubrid_set_autocommit() steuert, ob Datenbankoperationen auf einer CUBRID-Verbindung automatisch nach jeder Anweisung festgeschrieben (commit) werden. Ist der Autocommit-Modus aktiviert (CUBRID_AUTOCOMMIT_TRUE), wird jede SQL-Anweisung sofort als eigenständige Transaktion bestätigt. Bei deaktiviertem Autocommit (CUBRID_AUTOCOMMIT_FALSE) müssen Transaktionen explizit mit cubrid_commit() abgeschlossen oder mit cubrid_rollback() zurückgerollt werden.

Diese Funktion ist besonders relevant, wenn mehrere zusammenhängende Schreiboperationen (z. B. INSERT + UPDATE) atomar ausgeführt werden sollen. Durch das Deaktivieren des Autocommits kann sichergestellt werden, dass entweder alle Änderungen übernommen oder im Fehlerfall alle verworfen werden — ein grundlegendes Prinzip der Transaktionssicherheit (ACID).

Der Standardmodus einer neuen CUBRID-Verbindung kann je nach Serverkonfiguration variieren. Es empfiehlt sich daher, den gewünschten Modus direkt nach dem Verbindungsaufbau explizit zu setzen, um unerwartetes Verhalten zu vermeiden.

Als mode-Argument werden die vordefinierten Konstanten CUBRID_AUTOCOMMIT_TRUE und CUBRID_AUTOCOMMIT_FALSE verwendet, obwohl auch die booleschen Werte true und false akzeptiert 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.
$mode Pflicht bool Der gewünschte Autocommit-Modus. Verwende CUBRID_AUTOCOMMIT_TRUE (bzw. true) zum Aktivieren oder CUBRID_AUTOCOMMIT_FALSE (bzw. false) zum Deaktivieren des automatischen Festschreibens.

Rückgabewert

Typ
bool
Beschreibung
Gibt true zurück, wenn der Autocommit-Modus erfolgreich gesetzt wurde, andernfalls false im Fehlerfall (z. B. ungültige Verbindungsressource).

Beispiele

Autocommit deaktivieren und Transaktion manuell steuern

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

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

// Autocommit deaktivieren, um eine manuelle Transaktion zu starten
cubrid_set_autocommit($conn, CUBRID_AUTOCOMMIT_FALSE);

$sql1 = "INSERT INTO orders (customer_id, total) VALUES (42, 99.90)";
$sql2 = "UPDATE inventory SET stock = stock - 1 WHERE product_id = 7";

$res1 = cubrid_query($sql1, $conn);
$res2 = cubrid_query($sql2, $conn);

if ($res1 && $res2) {
    cubrid_commit($conn);
    echo "Transaktion erfolgreich abgeschlossen.";
} else {
    cubrid_rollback($conn);
    echo "Fehler aufgetreten, Transaktion zurückgerollt.";
}

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

Autocommit nach manueller Transaktion wieder aktivieren

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

// Autocommit für schnelle Einzeloperationen aktivieren
cubrid_set_autocommit($conn, CUBRID_AUTOCOMMIT_TRUE);

// Jede Anweisung wird sofort festgeschrieben
cubrid_query("UPDATE settings SET value = 'active' WHERE key = 'status'", $conn);

echo "Autocommit-Modus: " . (cubrid_get_autocommit($conn) ? 'aktiviert' : 'deaktiviert');

cubrid_disconnect($conn);
?>
Autocommit-Modus: aktiviert

// Wichtig · Fallstricke

Achtung bei unvollständigen Transaktionen: Wird die Verbindung geschlossen oder das Skript beendet, ohne dass ein explizites cubrid_commit() oder cubrid_rollback() aufgerufen wurde, rollt CUBRID ausstehende Transaktionen in der Regel automatisch zurück. Verlasse dich jedoch nicht auf dieses Verhalten — schreibe Transaktionen stets explizit ab.

Das Umschalten des Autocommit-Modus während einer laufenden Transaktion kann je nach CUBRID-Version und Konfiguration ein implizites Commit auslösen. Ändere den Modus daher möglichst nur außerhalb aktiver Transaktionen.