열리스트를 두 번 이상 지정하지 않고도 감사 트리거를 생성하려고합니다.트리거 데이터의 임시 테이블을 생성하십시오.
이 목적을 위해 트리거에서 INSERTED 또는 DELETED 데이터의 내용에 대한 임시 테이블을 생성 한 다음이를 감사 테이블로 처리하려고합니다. 나는이 사용하는 경우
: 그럼
IF @ChangeType = 'D'
SELECT * INTO #tmp FROM DELETED
ELSE
SELECT * INTO #tmp FROM INSERTED
을 나는 테이블 #tmp이 이미 존재하는 2 SELECT * INTO에서 컴파일 오류가 발생합니다.
나는 시도하고이 사용하여 동적 SQL 약 일 경우 :
SET @Sql = 'SELECT * INTO #tmp FROM '
IF @ChangeType = 'D'
SET @Sql = @Sq + 'DELETED'
ELSE
SET @Sql = @Sql + 'INSERTED'
EXEC (@Sql)
그럼 내가 지운 삽입 테이블이 존재하지 않는 오류가 발생합니다.
트리거의 INSERTED 및 DELETED 테이블을 임시 테이블 또는 다른 메모리 테이블로 가져 오려면 어떻게해야합니까? 때문에 해결 - 온 - 구문 분석 임시 테이블 개체에
SELECT TOP 0 * INTO #tmp FROM DELETED
IF @ChangeType = 'D'
INSERT INTO #tmp SELECT * FROM DELETED
ELSE
INSERT INTO #tmp SELECT * FROM INSERTED
왜 열 목록을 두 번 이상 지정하지 않으시겠습니까? SQL을 작성하는 것보다이 질문에 더 많은 시간을 할애해야 할 것입니다. :) – Tony
유일한 이유는 두 번 이상 지정할 필요가 없어야하기 때문입니다. 나는 '변경시 오류 범위를 제거하는'것이 가장 좋은 설명이라고 생각합니다. – Craig