2013-10-15 2 views
0

삽입 트리거를 실행하려고하는데 작동하지 않습니다. 로그를 볼 수있는 방법이 있습니까?삽입 트리거가 작동하지 않는 후

다음은 변수를 선언 한 후 @@ROWCOUNT을 확인하는 내 코드

ALTER TRIGGER [dbo].[SUBSID_INSERT] on [dbo].[STUDENT_MASTER] AFTER INSERT AS 
BEGIN 
SET NOCOUNT ON 
DECLARE @numrows int, @hostname char(30), @sysuser char(30); 

SELECT @numrows = @@rowcount; 
IF @numrows = 0 RETURN; 

SELECT @hostname = substring(hostname, 1, 30) 
FROM master.dbo.sysprocesses 
WHERE spid = @@spid; 

SELECT @sysuser = substring(system_user, 1, 30); 

INSERT INTO insert statement, 


FROM STUDENT_MASTER JOIN INSERTED I ON STUDENT_MASTER.ID_NUM = I.ID_NUM 
JOIN NAME_MASTER ON NAME_MASTER.ID_NUM = STUDENT_MASTER.ID_NUM 


WHERE 
STUDENT_MASTER.id_num not in (select DISTINCT id_num from subsid_master where subsid_cde LIKE '0%') 

END 

GO 
+3

* 작동하지 않습니다. * - how!?!?! 그것은 (a) 아무것도하지 않습니까? (b) 오류가 발생 했습니까? (c) 잘못된 것이 있습니까? –

+0

아무 것도 매개 변수가 0 행을 반환하는 것과 같지만 스크립트를 실행하면 삽입이 수행됩니다. –

+0

"INSERT INTO insert statement"란 무엇입니까? 방아쇠가 거기에 맞습니까? – bsivel

답변

4

입니다. 항상 마지막 문장 (이 경우 0)의 결과가 표시되므로 중지하십시오. 대신 다음을 사용하십시오.

SELECT @numrows = COUNT(*) FROM inserted; 

다른 잠재적 개선점이 많이 있지만 이것이 현재 "작동하지 않는 것"으로 보이는 이유입니다.

+0

+1 : @AaronBertrand, 당신의 대답은 명백합니다. 그러나이 수표가 필요한지 궁금합니다. 'inserted' 테이블이 비어 있다면'AFTER INSERT' 트리거가 작동합니까? –