新人SQL server 2008中用触发器创建复杂的公式(参数引用其它表中数据),出有关问题,求指点

新人求助:SQL server 2008中用触发器创建复杂的公式(参数引用其它表中数据),出问题,求指点
[size=18px][b]有两个表,一个是JGDCB,一个是二元形高参数表;表JGDCB中存储:每公顷断面积、胸径、树高、树种、蓄积量;二元形高参数表中存储:树种,a,b,c(abc为不同树种的参数值);
现在创建了一个触发器,希望输入每公顷断面积、胸径、树高和树种后,自动计算得到蓄积量,公式如下
   每公顷蓄积=每公顷断面积*a*树高的b次方/胸径的c 次方      
a,b,c 存储在二元形高参数表里,,,根据树种不同,a,b,c参数取值不同,
创建的触发器如下
触发器如下
create trigger JGB_tri
on JGDCB
for insert
as
begin transaction
update JGDCB
set 每公顷蓄积 = 每公顷断面积*(selecta from 二元形高参数表)*power(树高,(select b from 二元形高参数表))/power(胸径,(select c from 二元形高参数表))
where EXISTS ( select a,b,c from 二元形高参数表 where JGDCB.树种 = 二元形高参数表.树种名称)
commit transaction
可以保存,但是在运行输入的时候,出现错误查询返回的值不止一个当子查询跟随在 =、!=、<、<=、>、>= 之后,或子查询用作表达式时,这种情况是不允许的。

初学者,现学现卖,遇到问题很多,,求教大神,使用触发器是否是实现此计算功能较好的方法?还有啥方法?我做触发器问题出在哪?
新人分数不多,还请各位大神不吝赐教,,,,,拜谢新人SQL server 2008中用触发器创建复杂的公式(参数引用其它表中数据),出有关问题,求指点
------解决思路----------------------

--试试这样
create trigger JGB_tri
on JGDCB
for insert
as
begin transaction
update JGDCB
set 每公顷蓄积 = 每公顷断面积*tb2.a*power(树高,tb2.b)/power(胸径,tb2.c)
from 二元形高参数表 as tb2 join JGDCB on JGDCB.树种=tb2.树种
commit transaction

------解决思路----------------------
...
UPDATE JGDCB
   SET JGDCB.每公顷蓄积 = t.每公顷蓄积
  FROM JGDCB,
       (
        SELECT i.ID,
               i.每公顷断面积*p.power(i.树高,p.b)/power(i.胸径,p.c)  AS 每公顷蓄积
          FROM inserted i
          JOIN 二元形高参数表 p
            ON i.树种 = p.树种名称
       ) t
 WHERE JGDCB.ID = t.ID
...

只更新插入相关的,不要全表更新。

------解决思路----------------------
EXCEL 中小数都是按浮点双精度运算的,所以你应该统一转换为float运算,结果保存在 numeric(4,1) 字段中没关系。