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