厳密に言えば、そのような値をカスケードする唯一の方法は、ONUPDATECASCADEを使用することです。 それを行うには 、列「is_deleted」は一意性制約の一部である必要があります。
それだけでもそれほど難しいことではありません。 company.idが主キーの場合、列のペア{id、is_deleted}も一意になります。その列のペアに対する一意の制約により、外部キー参照を介して更新をカスケードできます。
しかし、それはあなたのでは機能しません 参照する値を異なる許可する必要があるためです。 参照値から。
したがって、あなたの場合、3つの選択肢があると思います。
- トリガー
- ストアドプロシージャ
- アプリケーションコード
これらすべての場合において、アクセス許可(おそらく削除アクセス許可の取り消し)とコードを回避できる場合に注意を払う必要があります。たとえば、dbmsコマンドラインインターフェイスとGUIインターフェイスを使用して、アプリケーションコードや、権限に応じてストアドプロシージャの制約を回避できます。