Merapatkan Jurang: Menguruskan Kekangan Utama Asing Merentas Pangkalan Data
Ralat "Rujukan kunci asing merentas pangkalan data tidak disokong" adalah halangan biasa apabila bekerja dengan data yang tersebar merentas berbilang pangkalan data. Had ini menghalang perhubungan yang jelas antara jadual dalam keadaan pangkalan data yang berbeza. Nasib baik, ada penyelesaian yang bijak.
Pencetus: Penyelesaian untuk Integriti Rujukan Merentas Pangkalan Data
Pencetus pangkalan data menawarkan cara yang berkuasa untuk mengekalkan integriti rujukan merentas pangkalan data. Pencetus ialah proses automatik yang melaksanakan kod SQL sebagai tindak balas kepada peristiwa pangkalan data tertentu (sisipan, kemas kini, pemadaman). Dengan mencipta pencetus ini, anda boleh memantau perubahan dalam jadual anak dan mengesahkan kewujudan nilai kunci utama yang sepadan dalam jadual berkaitan dalam pangkalan data lain.
Berikut ialah contoh ringkas pencetus SQL untuk acara sisipan:
<code class="language-sql">CREATE TRIGGER dbo.MyTableTrigger ON dbo.MyTable AFTER INSERT AS BEGIN -- Verify if the inserted foreign key value exists in the primary table (in a different database) IF NOT EXISTS(SELECT PK FROM OtherDB.dbo.TableName WHERE PK IN (SELECT FK FROM INSERTED)) BEGIN -- Handle the violation: raise an error or rollback the insert END END</code>
Pencetus ini memastikan bahawa baris baharu dalam jadual anak hanya ditambah jika nilai kunci utama yang sepadan wujud dalam jadual induk dalam pangkalan data berasingan.
Strategi Alternatif: Mengoptimumkan Reka Bentuk Pangkalan Data
Walaupun pencetus secara berkesan memintas pengehadan kunci asing merentas pangkalan data, pangkalan data secara amnya berprestasi lebih baik dan mengekalkan integriti rujukan dengan lebih cekap apabila jadual berkaitan berada dalam pangkalan data yang sama. Jika boleh, menggabungkan jadual anda ke dalam satu pangkalan data ialah pendekatan yang disyorkan untuk pengurusan data yang diperkemas.
Atas ialah kandungan terperinci Bagaimanakah Pencetus Boleh Menyelesaikan Isu Kekangan Utama Asing Merentas Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!