2013-01-02 132 views
0

假設我有兩個表(主鍵 - >外鍵),其中主鍵表中的一條記錄對應於外鍵中的多條記錄,所以如果我想爲兩個主鍵創建插入頁面(例如使用ASP.NET)表和外鍵表,我怎樣才能獲得主鍵值插入外鍵表? (通常我採取了最大(的PK),但我很好奇,以找到更好的解決方案)處理主鍵 - 外鍵表插入?

+1

取決於正在使用的數據庫系統。但是'MAX()'通常是一個壞主意,因爲它需要'INSERT'和'SELECT'之間的表獨佔訪問(通過序列化事務或者只是交叉手指和希望實現) –

回答

0

我假設你使用SQL Server,因爲你提到使用ASP.NET。在多用戶系統中使用Max(PK)不是一個好主意,因爲最終您最終會得到不正確的主鍵值。還有一些資源問題需要考慮。一般來說,這種方法應該避免。

有幾種方法可以完成你想要做的事情。一種方法是通過存儲過程進行插入。用於創建主鍵行的存儲過程將返回新行的Id值,然後可用於插入外鍵行。但不要使用Max(PK值)。使用SCOPE_IDENTITY()值。這假定你正在爲你的PK值使用一個身份類型。你沒有說明你實際使用的是什麼。

+0

如果他正在使用MySQL,它將是LAST_INSERT_ID()而不是SCOPE_IDENTITY() –