2012-11-29 40 views
0

有人可以告訴子表中的外鍵是否可以自動獲取它在父表中實際擁有的值? 我有兩張桌子的學生和課程表。學生的SSC是外鍵,我將數據正確地插入到學生表中。但是當我將數據插入課程表時,會給我一個錯誤?有什麼建議嗎? 變量的值是通過表單的post方法獲得的。如何在子表中的外鍵可以自動獲取它在父表中實際擁有的值

$query1=mysql_query("INSERT INTO course VALUES('','$subject','$total','$attendce','$ssn')")or die(mysql_error()); 

這是錯誤我得到....

不能添加或更新子行,外鍵約束失敗 (`cast_db`.`course`,約束`course_ibfk_1`外鍵(`cnic`) 參考`student`(`cnic`)ON DELETE CASCADE ON UPDATE CASCADE)

+0

什麼樣的錯誤?你如何試圖插入數據?請包括這些詳細信息,以便我們可以幫助您。我們不介意你知道的讀者! –

+0

如果我正確理解你的問題,那麼我建議你應該使用last_insert_index()來檢索索引。否則,如果可能的話,請提供更多詳細信息和sql。 – Isaac

+0

你在使用什麼語言/框架/情況?直的SQL?有時候你可以做類似的事情,但這一切都取決於你真正要問的問題。你沒有給我們足夠的信息來幫助你。 – JPR

回答

4

這是外鍵不是如何工作的。您必須先創建一個父記錄,獲取該記錄的ID(無論主鍵是什麼)值,然後在您的子記錄插入中使用該值。

記住 - 父表可以有許多記錄。數據庫無法知道哪些記錄是新的子記錄的父項。你明確說「這個新的孩子記錄有父母X」。

+0

是的,它聽起來不錯。我在我的父表中插入記錄,然後我插入記錄在子表中。(SSC是我在父母中的PK和子表中的FK)。但它不工作。 –

+0

@Naeem Marc B的回答是正確的,並且您需要糾正SQL命令的順序。如果您在SQL中插入這些記錄時遇到問題,則需要發佈您正在使用的SQL以及使用該SQL獲取的錯誤。 – Josh

相關問題