Strengt taget er den eneste måde at kaskadere værdier på ved at bruge ON UPDATE CASCADE. For at gøre det , skal kolonnen "is_deleted" være en del af en unik begrænsning.
Det alene er ikke for svært. Hvis company.id er din primære nøgle, så vil kolonneparret {id, is_deleted} også være unikke. En unik begrænsning på dette søjlepar ville give dig mulighed for at kaskadere opdateringer gennem en fremmednøglereference.
Men det virker ikke i din tilfælde, fordi du skal tillade, at referenceværdier er anderledes fra de refererede værdier.
Så i dit tilfælde tror jeg, du har tre muligheder.
- Udløsere
- Gemte procedurer
- Ansøgningskode
I alle disse tilfælde skal du være opmærksom på tilladelser (sandsynligvis tilbagekaldelse af slettetilladelser) og til tilfælde, der kan undgå din kode. For eksempel kan dbms kommandolinjegrænseflade og GUI-grænseflade bruges til at omgå begrænsninger i applikationskode og, afhængigt af tilladelser, i lagrede procedurer.