SQL Server 2008 - 复杂的插入触发器

时间:2011-08-03 11:08:18

标签: sql sql-server-2008 triggers insert dml

我不是SQL程序员,但我在项目中遇到了一个障碍,必须构造一个触发器,它将在插入命令后触发。问题如下:

我有3张桌子:

dbo. Build

id   (PK, int, not null)
date (smalldatetime, not null)


dbo.TestCase

id   (PK, int, not null)
Name (nvarchar(200), not null)


dbo.TestCaseExecution

id              (PK, int, not null)
build_id        (FK, int, not null)
testcase_id     (FK, int, not null)
passed          (int, null)            //1 or 0
executed        (int, null)            //1 or 0
duration        (real, null)
fail_percentage (real, null)           //null

现在,我从.xml文件读取数据,并通过用C#编写的项目将数据添加到数据库。在每次构建之后,我必须更新数据库并根据“传递”和“已执行”值计算每个测试的fail_percentage。

fail_percentage = (100)*(1 - (PassNumber/ExecutionNumber))

所以我需要一个触发器,它将: 1.插入命令后触发 2.根据较早的值计算fail_percentage,例如

after reading from file:

id  build_id  testcase_id  passed  executed  duration  fail_percentage
1   1         001          1       1         12:09     null

after trigger:

id  build_id  testcase_id  passed  executed  duration  fail_percentage
1   1         001          1       1         12:09     0

after reading from file:
id  build_id  testcase_id  passed  executed  duration  fail_percentage
1   1         001          1       1         12:09     0
2   2         001          0       1         12:32     null

after trigger:
id  build_id  testcase_id  passed  executed  duration  fail_percentage
1   1         001          1       1         12:09     0
2   2         001          0       1         12:32     50
是谁能帮我一把?

提前致谢, 阿图尔

1 个答案:

答案 0 :(得分:0)

确定

我没有使用触发器,在我的应用程序中,我将所有需要的数据存储在字典中:

  • 测试名称作为键值
  • 将值和执行值作为值传递

然后我计算百分比并将其插入数据库。