2011-08-03 54 views
1

我不是一個SQL程序員,但我在我的項目中遇到了一個障礙,必須構造一個觸發器,它將在插入命令後觸發。問題如下:SQL Server 2008 - 複雜的插入觸發器

我有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

如果你想讓人們幫助你,那麼你應該接受他們給你的答案。它可以幫助那些在網站上搜索的人快速找到他們問題的最佳答案,這是人們在這裏免費回答問題的小小認識。 –

+1

我想我錯過了一些東西。它看起來像你根本不需要觸發器。爲什麼不能只將fail_percentage定義爲計算列? – EBarr

+0

湯姆H.是的,但我沒有拒絕任何...我做錯了什麼? – Artur

回答

0

確定

我做到了不使用觸發器,我的應用程序裏面我存儲所有在字典中所需要的數據:

  • 測試名稱作爲關鍵字值
  • 傳遞值和執行值作爲值

然後我計算百分比並將其插入數據庫。