2011-08-09 48 views
0

假設我有兩個表格Tool和IOPoint,兩者都以GUID作爲PK。工具有一列是IOPoint表的GUID FK列。從Select語句更新FK Guid

當我在程序中更改IOPoint時,我不想更新值,而是從IOPoint中的條目列表更新FK(IOPoint表是不變的)。

因此,我必須根據2個唯一列從IOPoint中進行SELECT操作,並將THAT行的GUID更新到工具表的FK列中。

VAR myGUID = SELECT IOP.ID 
    FROM IOPoint IOP 
    WHERE IOP.A = @A AND [email protected] 

UPDATE Tool T 
    SET T.IOPoint_1 = myGuid 
    WHERE [email protected] 

我必須這樣做,查詢每DB更新30次左右,由於大量的在程序中使用IOPoints的,所以我需要找到做這件事,希望能不引起性能問題的最有效的方法。

任何幫助表示讚賞。感謝大家!

+0

我會更新這個來澄清。對於混淆抱歉。 應該只有兩列,我不應該說插入,而是更新工具表中的FK列。 – ImGreg

回答

2

我想你可以在下面顯示的單個SQL語句中執行SELECT和UPDATE。

假設表在dbo模式下,查詢使用鍵列ID連接表dbo.Tool和dbo.IOPoint,並按列A和B篩選行。然後,它將表IOPoint中的ID值更新爲工具表中的IOPoint_1列。

我希望這是你在找什麼。

UPDATE  T 
SET   T.IOPoint_1 = IOP.ID 
FROM  dbo.Tool T 
INNER JOIN dbo.IOPoint IOP 
ON   IOP.ID  = T.ID 
WHERE  IOP.A  = @A 
AND   IOP.B  = @B 
+0

這很好。謝謝! – ImGreg