0

現在、InnoDB トランザクションを使用して、単一の Web ページ要求の効果を管理しています。トランザクションごとに 1 つのリクエスト。リクエストが失敗した場合、これはうまく機能します。無視できます。

MySQL 管理の初心者として、私は PHP コードに何かを書くと、データベースに何か悪い影響を与えるのではないかと心配しています。極端な例として、WHERE ステートメントなどを使用しない DELETE FROM または UPDATE。トランザクションの考え方は、悪いトランザクションがコミットされた後で必然的に何が起こったかに気付いたときに、間違いをロールバックできるはずだということです。

ただし、データベースは頻繁に使用されるため、不正なトランザクションをコミットしてから、それに気付いて対処するまでの間に、他のトランザクションが発生する可能性があります。しかし、トランザクションに関して私が見たすべてのドキュメントと AWS の特定時点への復元では、トランザクションがコミットされる前に「戻る」ことしかできません。

では、悪いトランザクションの後に入ってきたトランザクションを回復または「ロールフォワード」するにはどうすればよいでしょうか? それらは InnoDB ログにあるので、悪いトランザクションを 1 つスキップするだけで、後のトランザクションを再度適用できますか? 私のソフトウェアは外部のクレジット カード プロセッサと連動しているため、後のトランザクションを失うという選択肢はありません。

それが不可能だと想像するのは難しいですが、「ロールフォワード」する方法が見つかりません。これは可能ですか?履歴テーブルをトリガーで保持し、履歴レコードを使用してロールバック後に更新するなど、データベース構造自体に書き込む必要があるものですか?

混乱している。

4

0 に答える 0