触发器没有执行
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
除非我遗漏了什么?
我写了一个简单的触发器:
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
除非我遗漏了什么?