保持ポイントの使用
単純な ROLLBACK および COMMIT ステートメントを使用して、トランザクション全体を書き込んだり元に戻したりできます。ただし、これは単純なトランザクションでのみ可能であり、より複雑なトランザクションでは部分的なコミットまたはロールバックが必要になる場合があります。
たとえば、前述した注文を追加するプロセスはトランザクションです。エラーが発生した場合は、orders 行を追加する前に戻るだけでよく、customers テーブル (存在する場合) にフォールバックする必要はありません。
トランザクションの一部のロールバックをサポートするには、トランザクション ブロック内の適切な場所にプレースホルダーを配置する必要があります。こうすることで、ロールバックする必要がある場合に、プレースホルダーにフォールバックできます。
これらのプレースホルダーは保持ポイントと呼ばれます。プレースホルダーを作成するには、次のように SAVEPOINT ステートメントを使用します:
Enter:
savepoint deletel;
各セーブ ポイントには、ロールバック時にロールバックする場所を MySQL が認識できるように、それを識別する一意の名前が付けられます。この例で指定された保持ポイントにフォールバックするには、次の手順を実行します:
次のように入力します:
rollback to deletel;
保持ポイントが多いほど良いです MySQL コードで必要なだけ保持ポイントを設定できます。よりいい。なぜ?保持ポイントが多いほど、必要に応じてロールバックする柔軟性が高まるためです。
保持ポイントの解放 トランザクション完了(ROLLBACKまたはCOMMITの実行)後、保持ポイントは自動的に解放されます。 MySQL 5 以降では、RELEEASESAVEPOINT を使用して保持ポイントを明示的に解放することも可能です。
デフォルトのコミット動作を変更する
前述したように、MySQL のデフォルトの動作はすべての変更を自動的にコミットします。つまり、MySQL ステートメントを実行するたびに、そのステートメントは実際にテーブルに対して実行され、変更はすぐに有効になります。変更を自動的にコミットしないように MySQL に指示するには、次のステートメントを使用する必要があります:
入力:
set autocommit = 0;
分析: 自動コミット フラグは、COMMIT ステートメントがあるかどうかに関係なく、変更を自動的にコミットするかどうかを決定します。 autocommit を 0 (false) に設定すると、MySQL は (autocommit が true に設定されるまで) 変更を自動的にコミットしないよう指示します。
フラグは接続固有です 自動コミット フラグは、サーバーではなく接続ごとにあります。
【関連おすすめ】
2. MySQLトランザクションROLLBACK、COMMITの使い方の詳細な説明
4. UPDATEトリガー(Update)とトリガーの詳細な分析
5.MySQLの削除トリガー(delete)の使い方の詳細な説明
以上がMySQL トランザクション - 保持ポイントの使用とデフォルトのコミット動作の変更の詳細な説明の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。