Mengapa kita tidak bisa memiliki banyak jalur kaskade?


9

Anda dapat melihat bahwa banyak pertanyaan telah diajukan tentang beberapa jalur kaskade . Sebagai contoh:

/programming/851625/foreign-key-constraint-may-cause-cycles-or-multiple-cascade-paths

/programming/6065501/multiple-cascade-delete-path-in-many-many-relationship-ef-4-1

/programming/27613117/introducing-foreign-key-constraint-may-cause-ikes-or-multiple-cascade-paths-s

Namun, dari apa yang saya lihat dan pahami, sama sekali tidak apa-apa jika Anda ingin menghapus catatan anak pada banyak dan bukan hanya satu syarat penghapusan catatan induk terkait.

Sementara dalam sebuah pertanyaan dikatakan bahwa SQL Server mencoba aman dengan mencegah hal ini terjadi, saya benar-benar tidak mengerti bahwa apa yang salah jika kita memiliki banyak jalur kaskade, dan masalah apa yang mencegahnya untuk membuatnya aman ?

Saya harap seseorang dapat menjelaskan hal itu kepada saya, dengan kata-kata yang sederhana dan sederhana, lebih disukai menggunakan contoh dari apa yang mungkin salah dalam kasus beberapa jalur kaskade.

Jawaban:


6

Pertanyaan "apa yang salah" ini hanya dapat dijawab oleh pengembang di Microsoft atau Sybase. Ketika ada beberapa jalur kaskade ke catatan yang sama, ada kemungkinan bahwa kode mungkin mencoba untuk menghapusnya beberapa kali. Jika tidak dibangun untuk menangani kemungkinan bahwa catatan yang akan dihapus sudah dihapus, itu mungkin menimbulkan kesalahan. Rupanya masalah ini benar-benar ada (atau dianggap ada!), Jadi alih-alih memperbaikinya, implementasinya menghindarinya dengan mencegah definisi duplikat jalur kaskade. Ini jelas jalan pintas, karena DBMS lain tidak punya masalah dengan situasi ini.


2
Anda akan berpikir bahwa setelah 20 tahun SQL Server, mereka akan memperbaiki masalah ini ...
Jeremy Holovacs
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.