SQL Server 2008 - сложный триггер вставки - PullRequest
1 голос
/ 03 августа 2011

Я не программист 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 голосов
/ 04 августа 2011

ки

Я сделал это без использования триггеров, внутри своего приложения я храню все необходимые данные в словаре:

  • имя теста в качестве значения ключа
  • передать значение и выполненное значение в качестве значения

Затем я считаю процент и вставляю его в базу данных.

...