는 내가 테이블 X
의 INSERT
즉시 다른 History
테이블에 그 기록을 복사 한 후 수행 할.트리거는 식별 ID의 기본 키를 복사 할 수 있습니까?
이제 표에는 Identity
열의 기본 키가 있으므로 레코드가 실제로 삽입 될 때까지 기본 키 ID가 없습니다. 나는이 기록에 trigger
내가 그 기록의 식별 ID를 얻을 것이다 나 여전히 비어 있습니다 할 경우
내 질문은?
는 내가 테이블 X
의 INSERT
즉시 다른 History
테이블에 그 기록을 복사 한 후 수행 할.트리거는 식별 ID의 기본 키를 복사 할 수 있습니까?
이제 표에는 Identity
열의 기본 키가 있으므로 레코드가 실제로 삽입 될 때까지 기본 키 ID가 없습니다. 나는이 기록에 trigger
내가 그 기록의 식별 ID를 얻을 것이다 나 여전히 비어 있습니다 할 경우
내 질문은?
그냥 삽입 "AFTER",하지 또는 "대신" "에 대한"로 방아쇠를 선언해야합니다 (마지막 하나 ... 사용하지 것이다 당신을 추측;)을
'삽입 후'트리거를 수행하면 해당 레코드가 이미 ID 컬럼의 값과 함께 있습니다.
예 ID가 트리거에서 사용 가능하지만 해당 ID를 올바르게 입력했는지 확인하십시오.
@@ IDENTITY, SCOPE_IDENTITY 등이 트리거에서 수행 할 작업을하지 않습니다!
SELECT @id = id FROM inserted
또한 나쁜 아이디어입니다.
항상 여러 변화가 동시에 이루어지고 기대하여 트리거를 작성합니다. 한 번에 테이블에 하나 개 이상의 레코드를 삽입 할 때 위의 방법은 모두 미묘하지만 중요한 오류가 발생합니다.
올바른 접근 방식은 삽입 된 테이블
즉
INSERT INTO myAuditTable(Id, Datetime, user)
SELECT id, GETDATE(), USER_NAME())
FROM inserted
에서 감사 테이블에 삽입하는 것입니다