2009-07-14 2 views
0

테이블의 트리거를 사용하지 않도록 설정하고 업데이트를 실행 한 다음 트리거를 다시 활성화하는 코드가 있습니다. 원본 테이블을 삭제하거나 스키마를 업데이트하지 않습니다."대상 테이블을 만든 후에 스키마가 변경되었습니다."Select Into 쿼리를 다시 실행하십시오. "

이 모든 것이 좋지만 동시에 SELECT INTO의 원본으로 해당 테이블을 사용하는 별도의 쿼리가 실행 중입니다. 두 쿼리가 동시에 실행하는 몇 가지 이유를 들어,이 오류가 얻을 : (. 내가 임시 테이블로 선택거야)

Schema changed after the target table was created. Rerun the Select Into query.

을 그래서

, 내 첫 번째 질문 :

"DISABLE TRIGGER"또는 "ENABLE TRIGGER"를 호출하면 TSQL의 테이블 스키마가 변경됩니까?

그리고 내 두 번째 질문 :

왜 두 번째 쿼리 보고서 대상이 임시 테이블 스키마 변경,시겠습니까?

답변

1

분명히 "DISABLE TRIGGER"또는 "ENABLE TRIGGER"를 호출하면 테이블의 스키마가 변경됩니다. 이 변경 사항을 추적하고 슬픔의 원인이되는 시스템 테이블에 catch 비트 플래그가있을 수 있습니다.

아마도 "다른"방식으로 트리거가 "실행되지 않음"을 알릴 수 있습니다. 테이블을 작성하고 행을 삽입하십시오. 존재하는 경우 해당 테이블에있는 행의 트리거 존재 유무 내에서 0을 리턴하고, 그렇지 않으면 처리를 수행하십시오. 필요에 따라이 행을 삽입/삭제하면됩니다 ...

+0

음 ... 고마워요! 적어도 그 행동을 설명합니다. 그것은 가능한 해결책이 약간의 kludge 인 것처럼 보입니다. – Chris

1

단일 사용자 모드가 아닌 프로덕션 시스템에서 트리거를 사용하지 않으려하거나 심각한 데이터 무결성 문제가있을 수 있습니다. 그것은 당신뿐 아니라 모든 사용자를 위해 tirgger를 비활성화합니다. daqtabase를 제대로 작동 시키려면 문제를 처리 할 differnt 방법을 찾아야한다고 생각합니다.

관련 문제