2013-04-22 4 views
0

부모/자식 레코드가 포함 된 테이블 A가 있습니다. 표 A를 참조하는 표 B가 있습니다. 외래 키는 적용되지 않습니다. 올바른 부모를 가리 키도록 자식 레코드를 업데이트하려면 대량 삭제/삽입을 수행하고 있습니다. 그러면 테이블 B에서 업데이트해야하는 새 기본 키가 자식 레코드에 할당됩니다.대량 삭제/삽입 후 외래 키 테이블 참조를 업데이트 하시겠습니까?

행 처리로 커서 나 행을 사용하지 않고이를 수행 할 수있는 방법이 있습니까?

+0

트리거를 사용할 수없는 특별한 이유가 있습니까? 일괄 업데이트가 비공개 작업입니까? –

+0

한 번의 패치 스크립트. – Kenoyer130

답변

1

일부 샘플 데이터를 게시하고 어떻게 수정해야합니까? 실제 테이블 스키마를 보지 않고서는 몇 가지 가정 만 할 수 있으므로 완벽하게 작동하지 않을 수 있습니다.

select PrimaryKeyField AS RowID, ChildKeyField AS OldChildID, newid() AS NewChildID 
into #UpdateTable 
from TableA 
where SomeConditionToSelectTheChildRecords 

update TableA 
set TableA.ChildKeyField = #UpdateTable.NewChildID 
from TableA 
    inner join #UpdateTable on TableA.PrimaryKeyField = #UpdateTable.RowID 

update TableB 
set TableB.ChildKeyField = #UpdateTable.NewChildID 
from TableB 
    inner join #UpdateTable on TableB.ChildKeyField = #UpdateTable.OldChildID 
+0

참고 실제로 표 A의 행을 삭제 한 다음 다시 추가하고 있습니다. – Kenoyer130

+0

먼저 행을 삭제해야합니까? 당신이 단지 그들을 업데이트 할 수있는 것처럼 보입니다, 아니면 아마도 나는 그 문제를 오해하고 있습니다. – McCee