2012-11-02 3 views
0

세 개의 다른 테이블에서 나는 INSERT, UPDATEDELETE 트리거를 구분합니다.트리거가 작동하지 않을 수 있습니까?

저는 예상대로 작동한다는 것을 알고 있습니다. (로그 테이블에 대한 변경 사항 추가, 삭제, 업데이트 및 확인을 시도했습니다). 그러나 로그 테이블에 내용이 없으면 행이 제거되거나 추가됩니다.

제 질문은 가능합니다. 예를 들어 활성화 된 INSERT 트리거가 트리거되지 않고 레코드를 추가 할 수 있습니까?

쿼리가 특정 트리거의 사용을 해제하는 것이 실행 된 경우 2005

+0

는 여러 레코드가 삭제/삽입이 가능인가요 단일 문? 나는 트리거가 SQL Server의 상황에서 한 번만 발생한다고 생각합니다. – Tobsey

+2

이 질문에 대한 일반적인 소스는 트리거가 'inserted'또는 'deleted'의 한 행만 처리하도록 작성한 것입니다. (예를 들어'select @var = col from ins erted'), 다중 행 문은 트리거에서 * * ​​행 만 기록합니다. 트리거 중 하나를 표시 할 수 있습니까? –

+0

확실히 가능하지만 항상 설정이되어 있지 않습니다 (설정 잠금, 레코드 잠금, 코드 구문 등). 특정 문제가 무엇인지 알 수 있도록 코드와 컨텍스트를 제공 할 수 있습니까? –

답변

0

그것은, 예를 수 SQL 서버에 사용하여

DISABLE TRIGGER { [ schema_name . ] trigger_name [ ,...n ] | ALL } 
ON { object_name | DATABASE | ALL SERVER } [ ; ] 

또한 Damien이 지적한 것처럼 트리거가 단일 레코드에서만 작동 할 수 있습니다. 잘못된 (simplyfied 예 :

UPDATE table SET field = value WHERE PK = (SELECT PK FROM inserted) 

더 나은 :.

UPDATE table SET field = value WHERE PK IN (SELECT PK FROM inserted) 

이 우리에게 방아쇠를 보여, 우리는 그것을 알아낼 수 있습니다

관련 문제