2010-10-31 107 views
0

我已經找過這個,但目前爲止沒有運氣。我在mysql中有兩個表,它們被配置爲父子。父表具有auto_increment類型的字段,並且該子級具有引用父級中的autoincrement列的字段。當我插入父表時,一切都很好。但是,當我插入子表時,它給了我一個例外,說父表中沒有引用列值。問題是,如何在刷新後自動增量ID的值,以便在執行其UPDATE(或在此情況下插入)之前,子對象具有引用。自動增量問題mysql

+0

我刪除了c#標籤,因爲這與c#無關。 – 2010-10-31 18:26:30

+0

@Albin Sunnabo:我認爲這個解決方案會涉及一些C#代碼,所以C#標記可能是相關的。但是,如果沒有更多的信息,這個問題很難回答。特別是,我希望看到用於執行更新/插入和精確錯誤消息的C#代碼。 – 2010-10-31 18:29:53

回答

1

插入新記錄時總是先插入父項。獲取auto_increment值(在mysql中使用LAST_INSERT_ID()),並在子表中使用它。從一開始你就可以開始穿行,所以如果插入到孩子身上出現問題,你可以回滾。

0

你的問題有點不清楚,但我假設你在引用父表中的auto_increment字段的子表中有一個列的外鍵約束是正確的?

在這種情況下,您需要在子表的FK列中爲每個更新或在子表上插入一個有效的值。如果你這樣做,你還會得到一個錯誤嗎?

的問題是,我怎麼刷新自動增量ID的 值之後 插入這樣的孩子有 參考之前執行其 UPDATE(或插入在這種情況下)。

這對我沒有意義。你是什​​麼意思刷新自動增量的值

通常,在插入父表後,您將檢索生成的auto_increment值(如何執行此操作取決於您使用的API,但所有數據庫API都可以執行此操作),請將此值設置爲子項中的相應列表,然後插入/更新子表。

0

聽起來好像您要在新表中插入新記錄的同時向父表中插入新記錄。嘗試使用存儲過程做到這一點?這樣,您可以執行插入到父表中,將標識符存儲在變量中,然後將該變量保存到子表中新記錄的外鍵字段中。