2010-01-08 3 views
0

SQL Server 2005의 트리거에 문제가 있습니다. 트리거를 만들었으므로 수동으로 행을 삽입하여 테스트 했으므로 제대로 작동하지만 스토어드 프로 시저를에서 호출합니다. aC# 웹 응용 프로그램 및 트리거가 해고되지 않습니다. 그래서 웹 응용 프로그램에서 삽입 된 동일한 데이터를 가져 와서 해당 행을 삭제하고 수동으로 다시 삽입하고 트리거가 다시 작동하지만 웹에서 저장 프로 시저를 호출 할 때는 그렇지 않습니다. 신청.SQL Server 2005의 트리거 문제

어떤 조언이 필요합니까? 사전에

감사합니다.

알버트

+2

다른 일이 계속되어야하므로 코드를 게시해야합니다. – duckworth

+1

저장 프로 시저가 작동하기 전에 트리거를 비활성화합니까? –

+0

아니요 트리거를 비활성화하지 않습니다. 트리거를 언급하는 것을 잊어 버렸습니다. tOrder가 OrderEx 테이블에 레코드를 삽입합니다. OrderEX 테이블 자체에 테이블 OrderInfo에 레코드를 삽입하는 다른 트리거 tOrderEx가 있습니다. – Albert

답변

0

당신은 일반적으로 중첩 트리거를 사용하지 말고, 당신이 alltogether을 피할 수 있다면, 반드시 그렇게해야한다. 이들은 디버그하기가 어렵고, 다른 개발자들 (앞으로는 로직 문제를 일으킬 수 있음)에 "가시적"이지 않으며,로드 하에서 성능 문제를 일으킬 수 있습니다.

이 문서를 참조하십시오 : 트리거가 다른 테이블을 변경하는 경우 기본적으로 중첩 트리거를 사용하여 Why use triggers in Microsoft SQL Server?

피를, 트리거는이 테이블에 대한 해고되지 않습니다 선언했다. "중첩 트리거 허용"서버 옵션 은 데이터베이스가 반대 동작을하도록 설정합니다. 트리거는 트리거가 이 다른 트리거를 시작하는 작업을 수행 할 때 중첩됩니다. 은 다른 트리거를 시작합니다. 트리거는 최대 3235 레벨까지 중첩 될 수 있습니다. 중첩 트리거의 논리를 따르기가 매우 어려우며 성능에 영향을 미칠 수 있습니다 ( ).

0

트리거 대신 웹 응용 프로그램에서 직접 삽입 문을 사용합니다. 그런 식으로 모니터링하고 디버그하는 것이 더 쉬울 것입니다.