Menunda Semakan Integriti Rujukan dalam MySQL: Adakah Mungkin?
Dalam MySQL, semakan integriti rujukan tidak ditangguhkan sehingga komit. Seperti yang dijelaskan dalam dokumentasi MySQL:
InnoDB menyemak kekangan UNIQUE dan FOREIGN KEY baris demi baris. Apabila melakukan semakan kunci asing, InnoDB menetapkan kunci peringkat baris yang dikongsi pada rekod anak atau ibu bapa yang perlu dilihatnya. InnoDB menyemak kekangan kunci asing dengan segera; cek tidak ditangguhkan kepada komitmen transaksi.
Tingkah laku ini bertentangan dengan standard SQL, yang menyatakan bahawa semakan kekangan harus ditangguhkan sehingga tamat transaksi. Walau bagaimanapun, InnoDB pada masa ini tidak menyokong semakan kekangan tertunda.
Implikasi untuk Manipulasi Data
Penguatkuasaan segera semakan integriti rujukan boleh membawa kepada cabaran apabila memasukkan atau mengubah suai data berkaitan . Sebagai contoh, apabila cuba memasukkan rekod anak ke dalam jadual yang merujuk rekod induk dalam jadual lain, MySQL akan melakukan semakan kunci asing dengan serta-merta. Jika rekod induk masih belum wujud atau telah dipadamkan, operasi sisipan akan gagal.
Alternatif untuk Pemeriksaan Tertunda
Walaupun MySQL tidak menyokong semakan kekangan tertunda yang benar , terdapat penyelesaian yang boleh mensimulasikannya kesan:
Adalah penting untuk ambil perhatian bahawa alternatif ini tidak meniru sepenuhnya kelakuan semakan kekangan tertunda. Mereka mungkin masih memerlukan campur tangan manual tambahan atau pengubahsuaian kod untuk memastikan integriti data.
Atas ialah kandungan terperinci Bolehkah Pemeriksaan Integriti Rujukan Ditunda dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!