使用IF语句插入触发器

时间:2015-06-17 12:43:07

标签: sql sql-server

我正在寻找一种基于条件触发触发器的方法,下面是我的sql。如果IF

,我如何在此触发器中包含ac_mail = '1@mail.com'语句
CREATE TRIGGER username
ON temp                   
AFTER INSERT                    
AS                    
DECLARE @var1 int ,@var2 char (100)  

select @var1 = al_id, @var2 = ac_mail

From temp                   

BEGIN                    




INSERT INTO user (v_id,v_m)                    
VALUES (@var1,@var2)      




END  

触发器只应在ac_mail = '1@mail.com'

时触发

3 个答案:

答案 0 :(得分:7)

触发器可以触发多个行 - 因此使用标量变量来捕获数据通常是错误的。正如查询基表而不是inserted - inserted只包含导致触发器触发的行,而您查询任何随机行的临时表。最后,当然,正如我现在说过两次,多行。因此,您不需要if,因为这些行的某些可能与您的条件匹配,而其他行可能 匹配。

我想你想要:

CREATE TRIGGER username
ON temp                   
AFTER INSERT                    
AS                    
INSERT INTO user (v_id,v_m)                    
select al_id,ac_mail from inserted where ac_mail = '1@mail.com'

看看它有多简单?

答案 1 :(得分:1)

试试这个: -

<h2>title</h2>

答案 2 :(得分:0)

试试这个sql

CREATE TRIGGER username
After INSERT ON temp
  REFERENCING NEW ROW AS New
FOR EACH ROW
  if(New.ac_mail=='1@mail.com')
  begin
  INSERT INTO user (v_id,v_m)                    
    VALUES (New.al_id,New.ac_mail)     
  end