2011-08-03 3 views
3

는 내가 테이블 XINSERT 즉시 다른 History 테이블에 그 기록을 복사 한 후 수행 할.트리거는 식별 ID의 기본 키를 복사 할 수 있습니까?

이제 표에는 Identity 열의 기본 키가 있으므로 레코드가 실제로 삽입 될 때까지 기본 키 ID가 없습니다. 나는이 기록에 trigger 내가 그 기록의 식별 ID를 얻을 것이다 나 여전히 비어 있습니다 할 경우

내 질문은?

답변

3

'삽입 후'트리거를 수행하면 해당 레코드가 이미 ID 컬럼의 값과 함께 있습니다.

5

예 ID가 트리거에서 사용 가능하지만 해당 ID를 올바르게 입력했는지 확인하십시오.

@@ IDENTITY, SCOPE_IDENTITY 등이 트리거에서 수행 할 작업을하지 않습니다!

SELECT @id = id FROM inserted 

또한 나쁜 아이디어입니다.

항상 여러 변화가 동시에 이루어지고 기대하여 트리거를 작성합니다. 한 번에 테이블에 하나 개 이상의 레코드를 삽입 할 때 위의 방법은 모두 미묘하지만 중요한 오류가 발생합니다.

올바른 접근 방식은 삽입 된 테이블

INSERT INTO myAuditTable(Id, Datetime, user) 
SELECT id, GETDATE(), USER_NAME()) 
FROM inserted 
에서 감사 테이블에 삽입하는 것입니다
관련 문제