"急救,在线等".....续
可能我没有把业务逻辑说清楚,我想想决定把业务逻辑抛开,只提纯触发器的问题,然后我自己再试,因为我现对触发器还没有过多了解.
现在两个最简单的表:
表a
字段: id num
说明: 自动编号 数字
表r
字段: id before Amount after num
说明: 自动编号 insert前的数量 insert的数量 insert后的数量 数字
(所有字段类型都为int)
现在我想实现如下功能:
往表a中插入数字,一次插入若干个,但一次只会插入相同的数字,比如说一次插入4个15
然后在表r中记录每种数字在插入前/后和插入的数量
我自己写了一个触发器如下:
CREATE TRIGGER mytest ON a FOR INSERT AS
DECLARE @amount int, @num int, @after int,
@before int
SELECT @amount = COUNT(num)
FROM inserted
SELECT @num = num
FROM inserted
SELECT @before = COUNT(num)
FROM deleted
WHERE num = @num
SELECT @after = COUNT(num)
FROM inserted
WHERE num = @num
insert into r values(@before,@amount,@after,@num)
测试:
insert into a values(10)
insert into a values(10)
insert into a values(10)
表a的内容:
id num
1 10
2 10
3 10
表r的内容:
id before Amount after num
1 0 1 1 10
2 0 1 1 10
3 0 1 1 10
但我希望表r得到的结果应该是这样的:
id before Amount after num
1 0 3 3 10
请问我的触发器应该怎样写?