2011-03-08 3 views
0

먼저 행을 삽입하고 SQL Server의 동일한 트랜잭션에서 다음 명령문에서 즉시 업데이트 할 수 없다고 들었습니다. 그러나 나는 (SQL Server 2005) 그렇게 해왔고 나의 결과는 끝났음을 보여줍니다. 제가 뭔가를 놓치고 있거나 바보 같은 짓을하고 있습니까? 제발 가르쳐주세요. 감사.동일한 트랜잭션에서 삽입 및 업데이트

+0

사용한 코드를 제공 할 수 있습니까? – Ramy

+0

또한 할 수없는 정보에 대한 근원이 있습니까? 아마 오해 일 것입니다. 확실히 그 문제는 내가 가진 것이 아닙니다. –

+0

SQL Server 2008에서 [MERGE] (http : //)가 도입되기 전에 [upserts 관련 문제] (http://samsaffron.com/blog/archive/2007/04/04/14.aspx)를 생각해보십시오. technet.microsoft.com/en-us/library/bb510625.aspx) 문을 참조하십시오. –

답변

1

삽입 횟수가 상대적으로 많으면 같은 쿼리에서 삽입 및 업데이트하면 잠긴 쿼리가 발생할 수 있습니다. 삽입시 트리거를 작성하고 값을 삽입하기 전에 값을 수정하는 것이 좋습니다. 귀하의 경우이 접근법이 얼마나 관련이 있는지 확신하지 못합니다. 하지만 그렇게 말하면 동일한 쿼리에서 삽입 및 업데이트가 가능합니다.

+0

네가 맞을 것이다! 또한 Output 절을 사용하여 트리거를 넣지 않도록 할 수 있습니다. 그러나 이것이 가능한지 (삽입 및 업데이트가 동일한 트랜잭션에서 가능한지) 확인하고 싶었습니다. 또한 추가 처리를 위해 새로 삽입 된 행의 ID 값이 필요하면 MAX (ID) 대신 SCOPE_IDENTITY()를 사용하는 것이 좋습니다. 올바른 접근 방법이기를 바랍니다. 답장을 보내 주셔서 감사합니다. 나는 흥미로운 발언/의견을 얻을 수 있기 때문에 아직 질문을 닫지 않을 것이다. – Tintin

+1

이 @LastRecordID INT 가 수행 선언 삽입 SET @LastRecordID = @@ IDENTITY UPDATE 테이블 SET 컬럼 = 값 WHERE ID = @ LastRecordID – Dimitri

관련 문제