触发器求救

楼主
触发器求救
角色      类别      权重      A(人数)      B(人数)      C(人数)      D(人数)


角色A      A类别      0.5      50      30      20      10
           0.5      50      30      20      10
     
B类别
     0.5      50      30      20      10
           0.5      50      30      20      10
。 等类别角色都还有



  表 A

           角色A得分      角色B的分      
                       
表 B

我现在想建一个触发器,让表A(指的是投票人数) 前台是对a b c d 进行的选择,统计了人数然后设计了( A=5,b=4  C=3  d=2)初值,
如果表A投票(批量更新的每行都是选择进行了投票,人数更新)根据人数 (A*权重)[第一类]所有相加。当表A更新时候,B表自动得到分数,更新到B表,
也许表达不清楚,重点就是想问下这个 触发器怎么建立
C# 写逻辑更新的方式如下:
     #endregion
         /// <summary>
         /// 多级模糊查询模型建立的方法
         /// </summary>
         /// <param name="Roules">是传入的相应角色</param>
         /// <returns></returns>
         public string EvealueRelust(string roluesName)
            {
             Eveal.BLL.SmallClass mySmallclass=new SmallClass();
             DataTable myTable = mySmallclass.GetData("distinct smallclass_name,S_Qz", "Rolues_Name='" + roluesName + "'").Tables[0];
             //得到角色想应的类别 下面是取得相应类别所保护的子因子;
             int rowsCount=myTable.Rows.Count;
             double setHA = 0; double setHB = 0; double setHC = 0; double setHD = 0;
             //循环相应类别,在
             for(int i=0; i<rowsCount;i++)
             {  string classSmall=myTable.Rows[i][0].ToString();
                 DataTable myStatistics=mystai.GetData("statistics_name,Roules_name,s_qz,A,B,C,D","smallclass_name='"+classSmall+"'").Tables[0];
                 int sRowsCount = myStatistics.Rows.Count;
                  double setA = 0; double setB = 0; double setC = 0; double setD = 0;
                 for (int j = 0; j < sRowsCount; j++)
                 {
                     //这一级循环是最里面的因子
                     doublyz=( Convert.ToDouble( myStatistics.Rows[j]["s_qz"].ToString())/100);
                     setA += Convert.ToDouble(myStatistics.Rows[j][3].ToString())*yz;  //循环计算;
                     setB += Convert.ToDouble(myStatistics.Rows[j][4].ToString())*yz;
                     setC += Convert.ToDouble(myStatistics.Rows[j][5].ToString())*yz;
                     setD += Convert.ToDouble(myStatistics.Rows[j][6].ToString())*yz;
                 }
                double Hyz=(Convert.ToDouble( myTable.Rows[i][1])/100);
                 setHA=setHA+setA*Hyz;
                 setHB=setHB+setB*Hyz;
                 setHC=setHC+setC*Hyz;
                 setHD=setHD+setD*Hyz;
             }
                   return (setHA+"|"+setHB+"|"+setHC+"|"+setHD);
             }


       /// 执行插入到 最后评估表的分数
       /// </summary> 第二个更新数据表方法
       /// <param name="rolues"></param>  
         public void Exectjfen(string rolues)
         {
           string Roules=EvealueRelust(rolues);
           string[] result = Roules.Split('|');
         //查出set里面 A B C D 初值;这个地方先不根据数据库选;
           string strr = new System_Set().GetData("BigClass_set", "").Tables[0].Rows[0][0].ToString();
           string[] strrArry = strr.Split('|');
           double allScore = 0;
           for (int i = 0; i < 4; i++)
           {
               allScore = allScore + Convert.ToDouble(result[i]) * Convert.ToDouble(strrArry[i]);
               

           }
           DataTable myEvalue = (new Eveal.BLL.Evaluate()).GetData("Expert_Score,Teacher_Score,student_Score", "setoff=1").Tables[0];
           DataTable myRolues = (new Eveal.BLL.Rolues()).GetData("R_Qz","").Tables[0];
           double myAllScore = 0;
           
          switch(rolues)

            {
               case "专家":
                   { (new Eveal.BLL.Evaluate()).ExecuteUpdate("Expert_Score='" + (allScore/100).ToString()+ "'", "setoff=1");
                   myAllScore = Convert.ToDouble(myEvalue.Rows[0][0]) * Convert.ToDouble(myRolues.Rows[0][0]);
                   (new Eveal.BLL.Evaluate()).ExecuteUpdate("Total_Score='" + (myAllScore / 100).ToString() + "'", "set      /// 执行插入到 最后评估表的分数
       /// </summary>
       /// <param name="rolues"></param>
         
         public void Exectjfen(string rolues)
         {
           string Roules=EvealueRelust(rolues);
           string[] result = Roules.Split('|');
         //查出set里面 A B C D 初值;这个地方先不根据数据库选;
           string strr = new System_Set().GetData("BigClass_set", "").Tables[0].Rows[0][0].ToString();
           string[] strrArry = strr.Split('|');
           double allScore = 0;
           for (int i = 0; i < 4; i++)
           {
               allScore = allScore + Convert.ToDouble(result[i]) * Convert.ToDouble(strrArry[i]);
               

           }
           DataTable myEvalue = (new Eveal.BLL.Evaluate()).GetData("Expert_Score,Teacher_Score,student_Score", "setoff=1").Tables[0];
           DataTable myRolues = (new Eveal.BLL.Rolues()).GetData("R_Qz","").Tables[0];
           double myAllScore = 0;
           
          switch(rolues)

            {
               case "专家":
                   { (new Eveal.BLL.Evaluate()).ExecuteUpdate("Expert_Score='" + (allScore/100).ToString()+ "'", "setoff=1");
                   myAllScore = Convert.ToDouble(myEvalue.Rows[0][0]) * Convert.ToDouble(myRolues.Rows[0][0]);
                   (new Eveal.BLL.Evaluate()).ExecuteUpdate("Total_Score='" + (myAllScore / 100).ToString() + "'", "setoff=1");
                       
                       
                   break;
                   }
               case "同行教师":
                   {
                       (new Eveal.BLL.Evaluate()).ExecuteUpdate("teacher_Score='" + (allScore / 100).ToString() + "'", "setoff=1");
                       myAllScore = Convert.ToDouble(myEvalue.Rows[0][1]) * Convert.ToDouble(myRolues.Rows[1][0]);
                       (new Eveal.BLL.Evaluate()).ExecuteUpdate("Total_Score='" + (myAllScore / 100).ToString() + "'", "setoff=1");
                       break;
                   }
               case "学生":
                   {
                       (new Eveal.BLL.Evaluate()).ExecuteUpdate("student_Score='" + (allScore / 100).ToString() + "'", "setoff=1");
                       myAllScore = Convert.ToDouble(myEvalue.Rows[0][2]) * Convert.ToDouble(myRolues.Rows[2][0]);
                       (new Eveal.BLL.Evaluate()).ExecuteUpdate("Total_Score='" + (myAllScore / 100).ToString() + "'", "setoff=1");
                       break;
                   }
           
           }
           

         }
                   break;
                   }
               case "同行教师":
                   {
                       (new Eveal.BLL.Evaluate()).ExecuteUpdate("teacher_Score='" + (allScore / 100).ToString() + "'", "setoff=1");
                       myAllScore = Convert.ToDouble(myEvalue.Rows[0][1]) * Convert.ToDouble(myRolues.Rows[1][0]);
                       (new Eveal.BLL.Evaluate()).ExecuteUpdate("Total_Score='" + (myAllScore / 100).ToString() + "'", "setoff=1");
                       break;
                   }
               case "学生":
                   {
                       (new Eveal.BLL.Evaluate()).ExecuteUpdate("student_Score='" + (allScore / 100).ToString() + "'", "setoff=1");
                       myAllScore = Convert.ToDouble(myEvalue.Rows[0][2]) * Convert.ToDouble(myRolues.Rows[2][0]);
                       (new Eveal.BLL.Evaluate()).ExecuteUpdate("Total_Score='" + (myAllScore / 100).ToString() + "'", "setoff=1");
                       break;
                   }
           
           }
           

         }
现在想在数据库建触发器,请各位指教:[/i][/i][/i][/i][/i][/i]

电脑版 Page created in 0.0703 seconds with 4 queries.