PDO::beginTransaction

Från Wiki.linux.se
Hoppa till navigering Hoppa till sök

PDO::beginTransaction

(PHP 5 >= 5.1.0, PHP 7, PHP 8, PECL pdo >= 0.1.0)

PDO::beginTransaction — Initierar en transaktion

Beskrivning

public PDO::beginTransaction(): bool

Stänger av autocommit-läge. När autocommit är avstängt kommer ändringar som görs i databasen via PDO-objektet inte att sparas förrän transaktionen avslutas med PDO::commit(). Om PDO::rollBack() anropas rullas alla ändringar tillbaka, och anslutningen återgår till autocommit-läge.

Vissa databaser, inklusive MySQL, gör automatiskt en implicit `COMMIT` när ett databasdefinitionsspråk (DDL)-kommando, som exempelvis `DROP TABLE` eller `CREATE TABLE`, utförs inom en transaktion. Detta implicit `COMMIT` hindrar återställning av andra ändringar inom transaktionens gränser.

Parametrar

Denna funktion har inga parametrar.

Returnerar

Returnerar `true` vid framgång eller `false` vid misslyckande.

Fel/Undantag

- Kastar ett `PDOException` om en transaktion redan är startad eller om drivrutinen inte stöder transaktioner. - Ett undantag kastas även om attributet `PDO::ATTR_ERRMODE` inte är satt till `PDO::ERRMODE_EXCEPTION`.

Exempel

Exempel #1 Återställ en transaktion

Följande exempel startar en transaktion och utför två kommandon som ändrar databasen innan ändringarna rullas tillbaka. På MySQL utför dock `DROP TABLE` automatiskt ett implicit `COMMIT`, vilket gör att inga ändringar inom transaktionen kan återställas.

<?php
/* Starta en transaktion och stäng av autocommit */
$dbh->beginTransaction();

/* Ändra databasschema och data */
$sth = $dbh->exec("DROP TABLE fruit");
$sth = $dbh->exec("UPDATE dessert
    SET name = 'hamburger'");

/* Upptäck misstaget och rulla tillbaka ändringarna */
$dbh->rollBack();

/* Databasanslutningen är nu tillbaka i autocommit-läge */
?>

Se även

Sidslut

Orginalhemsidan på Engelska :https://www.php.net/manual/en/pdo.begintransaction.php
PHP Funktioner Funktionsreferens Databas-tillägg


Det här är en maskinöversättning av PHP-manualen till svenska. Om du hittar fel är vi tacksamma om du rapporterar dem via formuläret som finns på https://www.linux.se/kontaka-linux-se/

Tack till Huddinge Datorhjälp som har sponsrat Linux.se med webbhotell.