2012-06-05 3 views
-1

레거시 시스템의 변경 사항을 추적하기 위해 트리거를 테이블에 추가해야하는 불행한 상황에 처해 있습니다. 삽입, 업데이트 및 삭제 TABLE_A 트리거 각각에 대한 TABLE_B 두 열의 값을 작성하고 삭제 트리거에 의해 채워진 경우 1로 설정된 비트 플래그를 씁니다.삽입 및 누화가 삭제 트리거를 시작합니까?

TABLE_B의 모든 항목이 두 번 나타납니다. insert는 두 개의 행을 만들고, update는 두 개의 행을 만들고, 우리는 insert와 delete를 생성한다.

레거시 응용 프로그램이 이와 같은 작업을 수행하고 있습니까, 아니면 SQL을 사용하고 있습니까?

EDIT (보다 상세하게 추가) : 트리거

본체 :

은 .. 후 업데이트

후 ..

INSERT INTO TableB(col1, isdelete) SELECT col1, 1 from DELETED 

가 .. 후

INSERT INTO TableB(col1, isdelete) SELECT col1, 0 from INSERTED 

삽입, 삭제

INSERT INTO TableB(col1, isdelete) SELECT col1, 0 from DELETED 

나는 프로파일 러를 시험해보고 중복 명령문이 실행되는 것을 보지 못했다.

+2

나는 어떤 추가적인 정보없이 당신을 도울 수있을 것이라고 생각하지 않는다 : 트리거 코드와 테이블 데이터의 예전/후 간단한 예가 아마도 도움이 될 것이다. –

+3

[SQL 프로파일 러] (http://msdn.microsoft.com/en-us/library/ms181091.aspx)를 확인하십시오. 그것은 당신이 응용 프로그램이 무엇을하고 있는지 파악할 수 있습니다. – HABO

+0

더 자세히 ... 질문에 – Roger

답변

0

응용 프로그램에서 데이터에 대한 작업을 볼 때 데이터가 다시 변경 될 수 있습니다.

다른 위치에 트리거가있을 수도 있습니다. 추가 행을 만드는 TableB에 트리거가 있다는 가능성이 있습니까?

자세한 내용을 더 자세히 다루려면 자세한 내용이 필요합니다.

관련 문제