私はメールキューを実装しているMySQLテーブルを持っていますが、システム内の予期しないエラーを報告するメールも送信します。時にはこれらの例外のないエラーがトランザクション内に発生することがあります。トランザクションをロールバックする際に、メールキューテーブルに挿入された行(予期しないエラーを報告しているメール)を取り消します。Mysqlは現在のトランザクションを無視して行を挿入します
私の質問は、可能なトランザクションロールバックを無視して、途中でテーブルに行を挿入するにはどうすればよいですか。つまり、トランザクションが最終的にロールバックされた場合、エラーの詳細を報告する電子メールの行挿入もロールバックしないことになります。
このテーブルは、複数の非同期プロセスによって読み取られ、キュー内のメールを送信することができます。このシナリオでは、メールは一度しか送信できないため、MyISAMテーブルタイプを使用することはできません。 Innodb。
ありがとうございます。
RDBMS機能を(誤って)使用しないで、適切な非同期メールキューを実装しないのはなぜですか? –
@ N.B。 RDBMSは完全に有効なメールキューです。そこにあるRDBMSベースのMTAはすべて私に同意します。 –
@EugenRieckどこが妥当でないと言いましたか?このシナリオにはうまく収まりません。トランザクションは使用されていますが、クエリはロールバックに「生き残る」必要があります。これは設計上の失敗を意味し、ロールバックに耐えられるように特定のデータを強制しようとするよりも、異なるアプローチがより良い解決策になる可能性があります。 –