2013-10-30 3 views
1
ALTER TRIGGER tr_EMPLOYEE2_FORINSERT 
ON EMPLOYEE2 
FOR INSERT 
AS 
BEGIN 
-- SELECT * FROM INSERTED --INSERTED Table is a special table created for the purposes of Triggers, it is available only in the context of the trigger. 
    DECLARE @ID INT 
    SELECT @ID = ID FROM INSERTED 

    INSERT INTO EMPAUDIT 
    VALUES('New Employee with id = ' + cast(@id as nvarchar(5)) + ' is added at ' + cast(getdate() as nvarchar(20))) 
END 

답변

0

a. 귀하의 EMPAUDIT 테이블이 어떤 모습인지 전혀 알 수 없습니다. 하지만를 추정하는 것은 (대부분의 테이블이 할) 하나 이상의 열이, 당신은 당신의 INSERT 문 열 목록을 사용한다고 :

INSERT INTO EMPAUDIT (Column_To_Insert_Into) 
VALUES('New Employee with id = ' + cast(@id as nvarchar(5)) + 
     ' is added at ' + cast(getdate() as nvarchar(20))) 

나. 그러나 실제로 방아쇠를 당긴다. 왜? inserted에는 개의 개의 행 (또는 행 없음)이 포함될 수 있습니다. 그래서 사실 우리가 원하는 것은 :

INSERT INTO EMPAUDIT (Column_To_Insert_Into) 
SELECT 'New Employee with id = ' + cast(i.id as nvarchar(5)) + 
     ' is added at ' + cast(getdate() as nvarchar(20)) 
FROM inserted i 

다음 당신은 당신이 당신의 트리거에서 작성한 코드의 나머지 부분을 필요가 없습니다