我正在寻找一种基于条件触发触发器的方法,下面是我的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'
答案 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