2012-12-27 29 views
0

我無法繞過外鍵。我得到一個數據庫錯誤1452說不能添加/更新一個子行,我不知道這意味着什麼。如何爲表中的新行創建外鍵? - MySQL的 - CodeIgniter

我假設從瀏覽周圍的答案,你需要從另一個表中獲取值,但我不知道如果這是正確的。

我想在表格中插入一行,導致該錯誤。我如何爲外鍵指定值,就像我想用CI插入的其他值一樣?

請幫

這裏就是我試圖插入:

$salarystuff = array('salary' => $salary, 'from_date' => $salary_from_date, 'to_date' => $salary_to_date); 
$this->db->insert('salaries', $salarystuff); 

表工資有列:EMP_NO,工資,到目前爲止,並從日期。我已經插入除了上面所示的id之外的所有內容,但是需要從另一個表中獲得id。以下是錯誤消息:

不能添加或更新子行(ON DELETE CASCADE employeessalaries,約束salaries_ibfk_1 FOREIGN KEY (emp_no)參考文獻employeesemp_no))外鍵約束失敗

+0

你能告訴我們一些代碼嗎?您的表架構,現有數據的示例以及您想要插入的內容? – Moseleyi

+0

我做了,對不起,我只是使用dev.mysql.com網站提供的數據庫 – a7omiton

回答

1

我得到一個數據庫錯誤1452說不能添加/更新子行 行,我不知道這意味着什麼。

它通常意味着您試圖插入行的表至少有一列包含對另一個表的外鍵引用。這意味着您爲該列提供的任何值都必須已經存在於該其他表中。 (這是沒有意義的存儲誰不存在的員工工資。)

不能添加或更新子行,外鍵約束失敗 (employees.salaries,約束salaries_ibfk_1 FOREIGN KEY (EMP_NO) 參考員工(EMP_NO)ON DELETE CASCADE)

當您插入一行到 「工資」,您提供的 「EMP_NO」 必須已經存在 「員工」 的價值。

所有可能的值都在「employees.emp_no」中。如何從所有這些可能值中挑選正確的「emp_no」取決於應用程序。

大多數情況下,我們希望用戶從員工編號和員工姓名的下拉列表中選擇一個員工編號,然後填寫新的工資。用戶是否填寫「從日期」和「到日期」或者是否自動完成取決於應用程序。在用戶選擇一個姓名並提供工資後,在用戶填寫或通過代碼計算「起始日期」和「到日期」後,可以將這些值作爲新行插入到「工資」中。

在任何情況下,就數據庫插入語句而言,您的CI代碼應處理「emp_no」,正如一樣,它處理所有其他列。