Sebenarnya, satu-satunya cara untuk mengalirkan nilai seperti itu adalah dengan menggunakan ON UPDATE CASCADE. Untuk melakukan itu , kolom "is_deleted" harus menjadi bagian dari batasan unik.
Itu saja tidak terlalu sulit. Jika company.id adalah kunci utama Anda, maka pasangan kolom {id, is_deleted} juga akan unik. Batasan unik pada pasangan kolom tersebut akan memungkinkan Anda untuk melakukan kaskade pembaruan melalui referensi kunci asing.
Tapi itu tidak akan berhasil di Anda kasus, karena Anda harus mengizinkan nilai referensi menjadi berbeda dari nilai yang direferensikan.
Jadi dalam kasus Anda, saya pikir Anda memiliki tiga opsi.
- Pemicu
- Prosedur tersimpan
- Kode aplikasi
Dalam semua kasus tersebut, Anda perlu memperhatikan izin (mungkin mencabut izin penghapusan) dan kasus yang dapat menghindari kode Anda. Misalnya, antarmuka baris perintah dbms dan antarmuka GUI dapat digunakan untuk mengatasi kendala dalam kode aplikasi dan, tergantung pada izin, dalam prosedur tersimpan.