Rumah >pangkalan data >tutorial mysql >Mengapa Kekangan Kunci Asing SQLite3 Nampak Gagal INSERT Sehingga `PRAGMA foreign_keys = ON;` Digunakan?
Kekangan Utama Asing SQLite3: Mengapa INSERT Berjaya Tanpa Rujukan
Walaupun SQLite3 menyediakan sokongan untuk kekangan kunci asing, isu timbul apabila cuba memasukkan rekod ke dalam jadual kanak-kanak tanpa mematuhi kekangan. Tingkah laku yang membingungkan ini boleh membuatkan anda bingung.
Untuk membongkar misteri ini, mari kita periksa skrip SQL yang disediakan. Ia menetapkan dua jadual: "Orang" dan "Pesanan", dengan "P_Id" dalam "Pesanan" ialah kunci asing yang merujuk kunci utama dalam "Orang."
Setelah memasukkan data ke dalam jadual "Pesanan", walaupun dengan jadual "Orang" kosong, sisipan nampaknya diteruskan tanpa ralat. Ini kerana kekangan kunci asing tidak didayakan secara automatik dalam SQLite3.x.
Untuk membetulkan anomali ini dan menguatkuasakan integriti kunci asing, anda mesti melaksanakan pertanyaan "PRAGMA" berikut setiap kali anda membuat sambungan ke pangkalan data SQLite anda :
PRAGMA foreign_keys = ON;
Dengan mengeluarkan arahan ini, SQLite3 akan bersungguh-sungguh menguatkuasakan semua kekangan utama asing, menghalang sisipan yang melanggar kekangan tersebut.
Keanehan ini berpunca daripada keserasian warisan SQLite dengan versi terdahulunya, SQLite 2.x. Walau bagaimanapun, dalam SQLite 4.x, kekangan kunci asing akan didayakan sebagai tetapan lalai, mengatasi tingkah laku aneh ini.
Atas ialah kandungan terperinci Mengapa Kekangan Kunci Asing SQLite3 Nampak Gagal INSERT Sehingga `PRAGMA foreign_keys = ON;` Digunakan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!