(PHP 5 >= 5.1.0)
pg_transaction_status — Gibt den aktuellen Transaktionsstatus des Servers zurück
Gibt den aktuellen Transaktionsstatus des Servers zurück.
Die Funktion pg_transaction_status() gibt ungültige Ergebnisse zurück, wenn sie für einen PostgreSQL-Server der Version 7.3 aufgerufen wird, bei dem der Parameter autocommit auf off gesetzt ist. Die serverseitige Eigenschaft autocommit ist veraltet und existiert in den neueren PostgreSQL-Versionen nicht mehr.
PostgreSQL-Verbindungskennung.
Mögliche Stati sind: PGSQL_TRANSACTION_IDLE (zur Zeit untätig), PGSQL_TRANSACTION_ACTIVE (ein Kommando wird abgearbeitet), PGSQL_TRANSACTION_INTRANS (untätig, aber innerhalb eines gültigen Transaktionsblocks) oder PGSQL_TRANSACTION_INERROR (untätig, innerhalb einer fehlgeschlagenen Transaktion). PGSQL_TRANSACTION_UNKNOWN wird zurückgegeben, falls eine Transaktion ungültig ist. PGSQL_TRANSACTION_ACTIVE wird nur dann zurückgegeben, wenn eine Abfrage zum Server gesendet wurde und noch nicht fertig abgearbeitet ist.
Beispiel #1 pg_transaction_status()-Beispiel
<?php
$dbconn = pg_connect("dbname=publisher") or die("Konnte nicht verbinden");
$stat = pg_transaction_status($dbconn);
if ($stat === PGSQL_TRANSACTION_UNKNOWN) {
echo 'Verbindung ist ungültig';
} else if ($stat === PGSQL_TRANSACTION_IDLE) {
echo 'Verbindung ist zur Zeit untätig';
} else {
echo 'Verbindung meldet eine Transaktion';
}
?>
Exact values of constants:
PGSQL_TRANSACTION_IDLE = 0
PGSQL_TRANSACTION_ACTIVE = 1
PGSQL_TRANSACTION_INTRANS = 2
PGSQL_TRANSACTION_INERROR = 3
PGSQL_TRANSACTION_UNKNOWN = 4
This function is implemented in C, so there's no way to mimic it in SQL for older versions of PHP. But you can mimic some of the functionality by using a wrapper which keeps track of when you begin and commit/rollback transactions.