Přesně řečeno, jediný způsob, jak kaskádovat hodnoty, jako je tato, je pomocí ON UPDATE CASCADE. Chcete-li to udělat, to , sloupec "is_deleted" musí být součástí jedinečného omezení.
To samo o sobě není příliš těžké. Pokud je vaším primárním klíčem company.id, pak bude jedinečný i pár sloupců {id, is_deleted}. Jedinečné omezení na tento pár sloupců by vám umožnilo kaskádovat aktualizace pomocí odkazu na cizí klíč.
Ale to nebude fungovat v vašich případě, protože musíte povolit, aby referenční hodnoty byly různé z referenčních hodnot.
Takže ve vašem případě si myslím, že máte tři možnosti.
- Spouštěče
- Uložené procedury
- Kód aplikace
Ve všech těchto případech musíte věnovat pozornost oprávněním (pravděpodobně zrušení oprávnění k odstranění) a případům, které se mohou vyhnout vašemu kódu. Například rozhraní příkazového řádku dbms a rozhraní GUI lze použít k překonání omezení v kódu aplikace a v závislosti na oprávněních v uložených procedurách.