假设我有两个表,Tool和IOPoint,两者都使用GUID作为PK。 Tool有一列是IOPoint表的GUID FK列。
当我在程序中更改IOPoint时,我不想更新该值,而是从IOPoint中的条目列表中更新FK(IOPoint表是不变的)。
因此,我必须根据2个唯一列从IOPoint进行SELECT,并将该行的GUID更新到Tool表的FK列中。
VAR myGUID = SELECT IOP.ID
FROM IOPoint IOP
WHERE IOP.A = @A AND IOP.B=@B
UPDATE Tool T
SET T.IOPoint_1 = myGuid
WHERE T.ID=@ID
由于程序中使用了大量的IOPoints,因此每次db更新时我必须执行大约30次查询,因此我需要找到最有效的方法,这样做有望避免性能问题。
感谢任何帮助。谢谢大家!
答案 0 :(得分: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