MySQLはネストされたトランザクションの使用を許可していますか?MySQLではネストされたトランザクションが許可されていますか?
69
A
答えて
59
InnoDB
SAVEPOINTS
をサポートします。
次の操作を行うことができます
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
---
0
あなたがPHPを使用している場合、あなたはそれは、MySQLとpgsqlで、及び他のコネクタへの拡張をサポートhttps://github.com/Enelar/phpsql に面白いかもしれません。
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());
14
MySQLのドキュメントから:
トランザクションは入れ子にすることはできません。これは、START TRANSACTION文またはその同義語の1つを発行するときに、現行のトランザクションに対して暗黙的にコミットされた結果です。 https://dev.mysql.com/doc/refman/5.7/en/implicit-commit.html
関連する問題
- 1. ネストされたトランザクションがなくても、レルム例外 "ネストされたトランザクションは許可されません"
- 2. vxmlでネストされた 'if'ステートメントが許可されていますか?
- 3. Postgres:ネストされた外部キーは許可されていますか?
- 4. ネストされた属性の許可されていないパラメータ
- 5. ネストされた関数は許可されませんが、ネストされた関数プロトタイプはなぜ許可されますか? [C++]
- 6. 「ネストされたトランザクション」のXLOCKはいつリリースされますか?
- 7. Hibernate errro:ネストされたトランザクションはサポートされていません
- 8. Hibernate、ネストされたトランザクションはサポートされていません
- 9. org.hibernate.TransactionException:ネストされたトランザクションは
- 10. Objective-Cではネストされた同期ブロックが許可されていますか?
- 11. ó xmlファイルでは許可されていませんが、.netリソースファイルで許可されていますか?
- 12. Jena TDB:ネストされたトランザクション
- 13. ADO.NETのネストされたトランザクション
- 14. EF6ネストされたトランザクション
- 15. Railsはネストされた属性を許可します
- 16. アクセス許可がすべて許可されていても、S3バケットへのアクセスは拒否されました
- 17. フラスコエラー:「メソッド許可されない方法が要求されたURLに許可されていません」
- 18. MySQLでネストされた共用体はサポートされていますか?
- 19. 要求されたレジストリは許可されていません
- 20. のRails:ホワイトリストのネストされたパラメータ/許可パラメータ/ネストされたフォーム
- 21. nodejs pgネストされていないトランザクション
- 22. Windowsストアではスクリプトアプリケーションが許可されていますか?
- 23. JPA:ネストされたトランザクションの方法はロールバックされません
- 24. ChromeでAjaxの許可ドメインが許可されていない
- 25. ネストされたオブジェクト化されたトランザクションはアトミックなままですか - または動作しますか?
- 26. MySQLは...私は2つのテーブルを持って、私の環境のトランザクションが許可されている
- 27. メソッドが許可されていないPUTまたは削除
- 28. MySQL/InnoDBでトランザクションがロールバックされない
- 29. シングルトン内のネストされた読み取り専用プロパティは許可されていませんか?
- 30. ActiveRecordでネストされたトランザクションを必要とするネストされたUI
MySQLはネストされたトランザクションに – hamedkh