Menyelesaikan Masalah Ralat Sambungan Luar Jadual Data: Kekangan Utama Asing Null
Ralat "Gagal mendayakan kekangan" sering timbul apabila gabungan luar menghasilkan nilai nol dalam lajur yang menguatkuasakan kekangan kunci asing bukan nol. Ini kerap berlaku apabila jadual yang dicantumkan menggunakan kunci utama komposit dan lajur kunci tersebut mengembalikan nol dalam hasil pertanyaan.
Berikut ialah cara untuk menangani perkara ini:
Jika nilai nol diketepikan, kunci primer pendua mungkin menjadi punca. Untuk penyahpepijatan lanjutan, gunakan blok Try/Catch
untuk menentukan ralat:
Contoh Pengendalian Ralat C#:
<code class="language-csharp">try { DataTable dt = TeachingLoadDAL.GetCoursesWithEvalState(i, bat); } catch (Exception ex) { if (ex is DataException) { var dataException = ex as DataException; if (dataException.Errors.Count > 0) { foreach (var error in dataException.Errors) { Console.WriteLine(error.Message); // Access the problematic DataRow var errorRow = dt.GetErrors()[error.RowNumber]; // Examine the error details for the DataRow Console.WriteLine(errorRow.RowError); } } } }</code>
Jika mesej ralat menghala ke lajur tertentu yang tidak membenarkan null, kendalikan null terus dalam pertanyaan SQL anda menggunakan fungsi seperti NVL()
(Oracle) atau ISNULL()
(SQL Server) untuk menggantikan null dengan nilai yang sesuai (cth., rentetan kosong ):
<code class="language-sql"> ... AND e.eval = NVL(e.eval, '') -- Oracle ... AND e.eval = ISNULL(e.eval, '') -- SQL Server ... ``` This prevents the constraint violation.</code>
Atas ialah kandungan terperinci Mengapa Sambungan Luar Jadual Data Saya Gagal dengan Kekangan Kunci Asing Null?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!