Rumah >pangkalan data >tutorial mysql >Bolehkah Pemeriksaan Integriti Rujukan Ditunda dalam MySQL?

Bolehkah Pemeriksaan Integriti Rujukan Ditunda dalam MySQL?

Barbara Streisand
Barbara Streisandasal
2024-11-10 19:48:03613semak imbas

Can Referential Integrity Checks Be Deferred in MySQL?

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:

  • Tetapkan AUTOCOMMIT kepada 0: Melaksanakan SET AUTOCOMMIT=0 sebelum memulakan transaksi akan menghalang MySQL daripada melakukan perubahan secara automatik. Kekangan hanya akan disemak pada penghujung urus niaga, apabila COMMIT dikeluarkan.
  • Gunakan prosedur tersimpan: Prosedur tersimpan boleh digunakan untuk melaksanakan berbilang penyata SQL dalam satu transaksi. Ini membolehkan kawalan yang lebih terperinci ke atas susunan operasi dan boleh membantu untuk mengelakkan ralat kekangan.

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!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn