SELECT ... FOR UPDATE
やなどの一部のデータベース機能は、ON DELETE CASCADE
使用されるロック順序がデータベースで指定されていないため、暗黙のうちにデッドロックに対して脆弱です。特定の実装は言うまでもなく、この動作が SQL 標準で指定されていないことを示唆する2 つの 議論を見つけました。そのため、ロックの順序を制御できないという前提で作業しています (少なくとも、その方法は明らかではありません)。
ロック順序に依存できない場合、データベースのデッドロックを回避するにはどうすればよいでしょうか?
デッドロックを回避する必要がない場合 (これを私に納得させるには、非常に懸命に戦わなければならないでしょう)、どうすればよいでしょうか?
この質問はデータベースにとらわれないものであるため、使用しているデータベースを聞かないでください。