2013-10-15 323 views
0

我试图运行插入触发器后,但它不工作,有没有办法看到它的日志?插入触发器不工作后

这里是我的代码

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

*不起作用* - 如何!?!?! (a)不做任何事情吗? (b)抛出一个错误? (c)做错了什么? –

+0

什么都没有,就像参数返回0行一样,但是如果我运行脚本,它会执行插入操作。 –

+0

什么是“插入插入语句”,?触发器是否与此相配... – bsivel

回答

4

您声明一个变量后检查@@ROWCOUNT。这将始终显示最后一条语句的结果(在本例中为0),所以请停止执行此操作。取而代之的只是使用:

SELECT @numrows = COUNT(*) FROM inserted; 

我看到很多其他潜在的改进,但这正是为什么它目前似乎是“不工作”。

+0

+1:@AaronBertrand,你的回答显然是正确的,但我想知道这个检查是否有必要?如果“插入”表为空,会触发'AFTER INSERT'触发吗? –