触发器没有执行

Trigger did not execute

我写了一个简单的触发器:

CREATE TRIGGER test_tr 
ON bi_test_tr
AFTER INSERT, UPDATE, DELETE
AS
BEGIN  
    INSERT INTO test (datechange, sum1, sum2, sum3) 
        SELECT 
            GETDATE(), SUM([filed1]), SUM([filed2]), SUM([filed3])
        FROM bi_test_tr 
END
GO

触发器应将 3 列(filed1、filed2、filed3)的总和插入到 table test 中,并带有当前日期。

但是当我将新数据集上传到 bi_test_tr 时,没有任何内容被插入 test

你知道为什么吗?

我认为你应该先做 select 然后插入。但我不确定,但你应该这样做

select getdate(), sum([field1]), sum([field2]), sum([field3]) into var1, var2, var3;

并且必须首先声明这 3 个变量。 最后,您只需插入这些变量即可。

同样,我不确定,但你可以试试 :)

我刚刚使用以下代码测试了您的代码:

create table bi_test_tr (
    filed1 int,
    filed2 int,
    filed3 int
)
GO

create table test (
    datechange datetime,
    sum1 int, 
    sum2 int, 
    sum3 int
)
GO

CREATE TRIGGER test_tr 
ON bi_test_tr
AFTER INSERT, UPDATE, DELETE
AS
BEGIN  
    INSERT INTO test (datechange, sum1, sum2, sum3) 
        SELECT 
            GETDATE(), SUM([filed1]), SUM([filed2]), SUM([filed3])
        FROM bi_test_tr 
END
GO

insert into bi_test_tr values (1,1,1);
insert into bi_test_tr values (2,2,2);
insert into bi_test_tr values (3,3,3);
insert into bi_test_tr values (4,4,4);
insert into bi_test_tr values (5,5,5);

select * from test

并得到了预期的结果:

2016-05-12 12:03:09.253    1    1   1
2016-05-12 12:03:09.287    3    3   3
2016-05-12 12:03:09.307    6    6   6
2016-05-12 12:03:09.307   10    10  10
2016-05-12 12:03:09.310   15    15  15

除非我遗漏了什么?