PDO::beginTransaction
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
- PDO::commit() - Bekräftar en transaktion
- PDO::rollBack() - Rullar tillbaka en transaktion
- Transactions and auto-commit
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.