2011-08-09 5 views
0

두 테이블 (Tool과 IOPoint)이 모두 GU로 PK로 있다고 가정 해 보겠습니다. 도구에는 IOPoint 테이블에 대한 GUID FK 열의 열이 있습니다.Select 문에서 FK Guid 업데이트

프로그램에서 IOPoint를 변경할 때 값을 업데이트하지 않고 대신 IOPoint의 항목 목록에서 FK를 업데이트합니다 (IOPoint 테이블은 변경되지 않음).

따라서 IOPoint에서 2 개의 고유 한 열을 기반으로 SELECT를 수행하고 THAT 행의 GUID를 Tool 테이블의 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] 

나는이 쿼리로 인해 프로그램에서 사용 IOPoints의 많은 수의 DB 업데이트 당 약 30 시간을해야 할, 그래서 나는 희망 성능 문제가 발생하지 않습니다이 그 일을 가장 효율적인 방법을 찾아야 .

도움을 주시면 감사하겠습니다. 모두에게 감사드립니다!

+0

나는 이것을 명확히하기 위해 업데이트 할 것입니다. 혼란을 드려 죄송합니다. 두 개의 열만 있어야하며 삽입이라고 말하면 안되지만 Tool 테이블의 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

관련 문제