Ermöglicht MySQL die Verwendung verschachtelter Transaktionen?Sind verschachtelte Transaktionen in MySQL erlaubt?
Antwort
InnoDB
unterstützt SAVEPOINTS
.
Sie können folgendes tun:
CREATE TABLE t_test (id INT NOT NULL PRIMARY KEY) ENGINE=InnoDB;
START TRANSACTION;
INSERT
INTO t_test
VALUES (1);
SELECT *
FROM t_test;
id
---
1
SAVEPOINT tran2;
INSERT
INTO t_test
VALUES (2);
SELECT *
FROM t_test;
id
---
1
2
ROLLBACK TO tran2;
SELECT *
FROM t_test;
id
---
1
ROLLBACK;
SELECT *
FROM t_test;
id
---
Dank Unterstützung, ich werde dies für die Zukunft im Auge behalten. –
Dies war nicht die Frage, "Savepoints" sind eine Sache "verschachtelte Transaktion" Unterstützung war die eigentliche Frage. Siehe [diesen Link] (http://docs.oracle.com/cd/E17076_02/html/gsg_txn/C/nestedtxn.html) – arod
@arod: Könnten Sie bitte den Unterschied in einem single-threaded Kontext erklären? Vielen Dank! – Quassnoi
Wenn Sie mit PHP, dann könnten Sie interessant sein, in https://github.com/Enelar/phpsql Es mysql und pgsql und erweiterbar auf andere Anschlüsse unterstützen.
function TransferMoney()
{ // Nested transaction code could not even know that he nested
$trans3 = db::Begin();
if (!db::Query("--Withdraw money from user", [$uid, $amount], true))
return $trans3->Rollback();
db::Query("--Deposit money to system");
return $trans3->Commit();
}
$trans = db::Begin();
db::Query("--Give item to user inventory");
$trans2 = $trans->Begin();
$trans2->Query("--Try some actions and then decide to rollback");
$trans2->Rollback();
// Commit or rollback depending on money transfer result
return $trans->Finish(TransferMoney());
Von MySQL-Dokumentation:
Transaktionen nicht verschachtelt werden können. Dies ist eine Konsequenz der impliziten Festschreibung, die für jede aktuelle Transaktion ausgeführt wird, wenn Sie eine START TRANSACTION-Anweisung oder eines ihrer Synonyme ausgeben. https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html
- 1. Verschachtelte Transaktionen sind nicht erlaubt in Android Studio
- 2. Postgres: Sind verschachtelte Fremdschlüssel erlaubt?
- 3. Sind verschachtelte 'if' Anweisungen in vxml erlaubt?
- 4. Verschachtelte Transaktionen in ADO.NET
- 5. Verschachtelte Transaktionen in SQL Server
- 6. Verschachtelte Transaktionen in SQL-Server
- 7. Verschachtelte Funktionen sind nicht erlaubt, aber warum geschachtelte Funktionsprototypen erlaubt sind? [C++]
- 8. JPA Verschachtelte Transaktionen und Sperren
- 9. org.hibernate.TransactionException: verschachtelte Transaktionen nicht unterstützt
- 10. Python Spark-Gruppe Transaktionen in verschachtelte Schema
- 11. MySQL Queue Transaktionen
- 12. MySQL Catching Ausnahmen in Transaktionen
- 13. MYSQL Syntaxfehler bei Transaktionen?
- 14. Einfache Möglichkeit verschachtelte Transaktionen zu verarbeiten
- 15. SQL SERVER 2008R2 Verschachtelte Transaktionen mit RAISERROR
- 16. Sind anonyme Funktionen erlaubt?
- 17. Sind polymorphe Variablen erlaubt?
- 18. PDO, mysql, Transaktionen und Tabellenverriegelung
- 19. Sharding und Transaktionen mit MySQL
- 20. Mysql Deadlock einzelnen Einsatz Transaktionen
- 21. Nur Incestor-Abfragen sind innerhalb von Transaktionen erlaubt, wie damit umzugehen?
- 22. So implementieren Sie verschachtelte Transaktionen in Java, Spring JDBC und MySQL
- 23. Umgang mit Rollback-MySQL-Transaktionen in Node.js
- 24. Wie verwendet man MySQL-Transaktionen in WordPress?
- 25. java.lang.IllegalStateException: Verschachtelte Transaktionen sind nicht zulässig. Verwenden Sie commitTransaction() nach jeder begintransaction()
- 26. Verschachtelte Select-Anweisung in Mysql
- 27. MySQL Fremdschlüssel nicht erlaubt einfügen
- 28. Warum sind Tabellenspalten nicht erlaubt?
- 29. sind Java-Bibliotheken in Android erlaubt ..?
- 30. Sind alle CSS Pseudoklassen in mPDF erlaubt?
mysql nicht verschachtelte Transaktionen – hamedkh