2011-05-04 74 views
2

我想插入兩個關聯的記錄到兩個表中。一條記錄通過外鍵與另一條記錄相關聯。如何將兩個關聯的記錄插入兩個表中?

例如我有兩個記錄:

product (productid,product_name,category_id) 
category (category_id,category_name) 

category_idauto_increment。所以我不知道它的價值,直到我把它插入類別表。所以在這裏我必須調用三個sql查詢,一個是將記錄插入到類別表中,第二個是檢索category_id,最後一個sql查詢是將記錄插入到產品表中。

總的來說,由於執行三個sql查詢,性能似乎不太好。我只想知道這種情況下是否有最佳做法?由於

張春華

+0

哪種編程語言/接入上圖書館你在用? PHP? – 2011-05-04 13:57:05

回答

0

Check here當已經 生成了一個新的AUTO_INCREMENT值,你如何能得到最後插入的唯一ID

,你也可以通過執行SELECT LAST_INSERT_ID() 語句的mysql_query(獲得它 )和 從語句返回的結果集 中檢索值。

還要注意的是

對於LAST_INSERT_ID(),最 最近生成的ID保持在 服務器中每個連接基礎

+0

一個問題是,如果在同一時間有另一個插入,那麼也許我會錯誤的last_insert_id。這是否意味着我需要鎖定整個桌子? – zjffdu 2011-05-04 14:25:10

+0

MySQL將正確處理id的auto_increment。即使兩個插入語句完全同時插入,MySQL也能夠區分它們。你需要最後一個自動遞增的ID來作爲外鍵插入到另一個表中,對嗎?這是調用'LAST_INSERT_ID()'的好處。它工作**每個連接的基礎**。因此,如果同時插入1000條記錄,則無關緊要,您將始終將當前連接的自動遞增ID用作外鍵。 – 2011-05-05 04:39:02

+0

Ranhirus,你的意思是我需要將這些步驟放在一個事務中以確保它們使用相同的連接? – zjffdu 2011-05-07 15:00:13

0

你不必調用SQL看插入自動增量值,你可以使用last_insert_id功能。

相關問題