在SQL中插入数据时按顺序更新字段

时间:2016-03-23 22:56:24

标签: sql-server triggers

我有一个场景,我希望表中的字段按顺序递增。 假设我有一个表Test,包含TestID,TestResult1,2等。和TestCount列。 我已将数据批量插入表中。一些记录可能是重新测试,这意味着要插入的新数据与表中的现有记录相匹配,应更新测试计数。在TestID上完成匹配

如果表格如下:

TestID TestResult1 TestResult2.. 
12         3         5             
12         2          2    

要插入的数据

TestID TestResult1 TestResult2.. TestCount 
12         1         1             1
12         2         2             2
13         4         1             1
12         3         5             3
12         2         2             4

该表应更新为

TestID TestResult1 TestResult2.. TestCount 
12         1         1             1
12         2         2             2
13         4         1             1
12         3         5             3
12         2         2             3

CREATE TRIGGER trgTestCount
on Test
AFTER INSERT 
AS 
Update  g
Set TestCount= (Select Count(*)+1  from Test g join INSERTED g1 where g.TestID=g1.TestID )
from Test g 

我尝试在表上添加一个触发器来更新TestCount计算匹配的记录数。但它正在更新表格如下

#import <linkedin-sdk/LISDK.h>

这是一个SSIS包,我使用数据流任务将数据从STg表加载到测试表。 你能告诉我这里我做错了吗?

1 个答案:

答案 0 :(得分:0)

如果您可以更改表格结构,我建议您添加Identity列,将TestCount列更改为computed column,并将其值作为不同测试ID的计数与当前行测试ID相同,创建日期低于Identity列的当前值。

这将消除对触发器的需要,并将自动处理插入具有相同测试ID的多个记录。