Sql server 触发器-insert into@table select from inserted,如果@rowcount>;来自@table的0
在插入、更新后,我在表a上有一个触发器。在insert时,当条件正确时,信息被插入到表变量中,如果从select恢复了某些内容,则执行一个过程 如果Sql server 触发器-insert into@table select from inserted,如果@rowcount>;来自@table的0,sql-server,tsql,triggers,rowcount,Sql Server,Tsql,Triggers,Rowcount,在插入、更新后,我在表a上有一个触发器。在insert时,当条件正确时,信息被插入到表变量中,如果从select恢复了某些内容,则执行一个过程 如果@ds为空,则不执行该过程。有什么建议吗 我试过这个,但没用: .... SET @dif = (SELECT ISNULL(COUNT(*), 0) FROM @ds); IF @dif > 0... 谢谢 CREATE TRIGGER t_tablaA ON tablaA AFTER INSERT, UPDATE AS BEGIN
@ds
为空,则不执行该过程。有什么建议吗
我试过这个,但没用:
....
SET @dif = (SELECT ISNULL(COUNT(*), 0) FROM @ds);
IF @dif > 0...
谢谢
CREATE TRIGGER t_tablaA
ON tablaA
AFTER INSERT, UPDATE
AS
BEGIN
DECLARE @ds TABLE (d VARCHAR(50));
@who VARCHAR(MAX);
INSERT INTO @ds
SELECT p.email
FROM inserted
INNER JOIN personel p ON inserted.user = p.user
IF @@rowcount > 0
SELECT @who = COALESCE(@who , '') + d + '; '
FROM @ds
EXECUTE sendEmailTo(@who);
END;
您可能缺少
BEGIN。。结束
:
if @@rowcount > 0
BEGIN
select @who = COALESCE(@who , '') + d + '; ' FROM @ds;
execute sendEmailTo(@who);
END;
或:
请注意,使用变量
@who=COALESCE(@who,,)
进行仿真可能会导致未定义的行为(特别是在使用ORDER BY
时)
另一件事:从触发器发送电子邮件可能会导致性能问题。触发器应该执行“简单”操作,并且不访问外部系统。您可能缺少
BEGIN。。结束
:
if @@rowcount > 0
BEGIN
select @who = COALESCE(@who , '') + d + '; ' FROM @ds;
execute sendEmailTo(@who);
END;
或:
请注意,使用变量
@who=COALESCE(@who,,)
进行仿真可能会导致未定义的行为(特别是在使用ORDER BY
时)
另一件事:从触发器发送电子邮件可能会导致性能问题。触发器应该做“简单”的动作,不访问外部系统。< /P> @ USER 3535302请考虑接受我的回答():@ USER 3535302,请考虑接受我的回答():