与えられたタスクは、与えられた制約では解決できないようです.私の理解が正しければ、データベースの数と行のスキーマは定数です.
それで、残った変数:
- データベースへの追加の「インジェクション」
- 時間のトリック
- トリガーのトリック
- 時間内に複製されなかった変更の「レイト バインディング」
現在、うまくいきそうなアイデアが 1 つだけ見つかりました:
- 「Lines」テーブルにトリガーを追加して、「Order」レコードのタイムスタンプ (last_line_time) を変更します
- レプリカでは、last_line_time と同じ時間の Line が表示されるまで待ちます。
- max(lines.line_time)> order.last_line_time の場合、注文は廃止されます
- max(lines.line_time)
- max(lines.line_time) ==order.last_line_time の場合、今のところすべて問題ありません:)
ただし、Lines が常に変更され、Lines テーブルのレプリカが常に遅れている場合、このケースは無限ループに陥る可能性があります。