表一:
ID 合同额 工程管理费 设备材料费 工程费 财务费  设备材料费 技术取费比率 技术取费 税费 毛利润想要实现结结果如下:当插入工程管理费,工程费,财务费,设备材料费后实现如下结果
技术取费=设备材料费*技术取费比率
税费=(合同额-设备材料费)/ 1.17*0.17
毛利润=合同额-设备材料费-技术取费-工程管理费-税费-工程费-财务费
create trigger aa_insert
on liulan
for insert,update
as if @@rowcount=0 return
 
if exists(select 1 from liulan)
update liulan set 技术取费=设备材料费*技术取费比率,
税费=(合同额-设备材料费)/ 1.17*0.17,
毛利润=合同额-设备材料费-技术取费-工程管理费-税费-工程费-财务费
go
drop table liulan
CREATE TABLE liulan
  (Id  Int Primary Key IDENTITY,
   合同额 money,
   工程管理费 money,
   
   工程费 money,
   财务费 money,
   设备材料费 money,
   技术取费比率 money,
   技术取费 money,
   税费 money,
   毛利润     money
   )
go 
毛利润算不出啊,数据也没有更新,只有当下次重新启动才可以显示,并提示键列信息不正确更新影响到多行。怎么一用触发器就提示更新影响到多行啊
在家帮看看怎如何写啊,谢谢啊

解决方案 »

  1.   

    --try
    create trigger aa_insert
    on liulan
    for insert,update
    as if @@rowcount=0 return
     
    if exists(select 1 from liulan)
    update liulan set 技术取费=设备材料费*技术取费比率,
    税费=(合同额-设备材料费)/ 1.17*0.17,
    毛利润=合同额-设备材料费-技术取费-工程管理费-税费-工程费-财务费
    from liulan a,inserted b
    where a.id=b.id
    go
      

  2.   

    create trigger aa_insert
    on liulan
    for insert,update
    as if @@rowcount=0 return
     
    if exists(select 1 from liulan)
    update liulan set 技术取费=设备材料费*技术取费比率,
    税费=(合同额-设备材料费)/ 1.17*0.17,
    毛利润=合同额-设备材料费-技术取费-工程管理费-税费-工程费-财务费 from liulan a,inserted b where a.关联字段=b.关联字段
    go--需要把inserted表和liulan进行关联
      

  3.   

    to :LouisXIV(夜游神)
    再请教两个问题:1.毛利润还是算不出啊
                    2.数据得在下次执行程序时才可显示。
    谢谢夜游神,再帮看看啊,谢谢!!
      

  4.   

    毛利润的计算公式中的技术取费和税费,你用前面的公式代换掉试试你的前台是用什么的,触发器都是在插入之后才执行的,插入当时是看不到数据变化的,需要刷新才可以。BTW:像这样的表格设计是很失败的-_-
      

  5.   

    这个用计算列应该也可以CREATE TABLE liulan
      (Id  Int Primary Key IDENTITY,
       合同额 money,
       工程管理费 money,
       工程费 money,
       财务费 money,
       设备材料费 money,
       技术取费比率 money,
       技术取费 as 设备材料费*技术取费比率,
       税费 as 合同额-设备材料费,
       毛利润 as 合同额-设备材料费-设备材料费*技术取费比率-工程管理费-合同额-设备材料费-工程费-财务费)
    go 
      

  6.   

    to :LouisXIV(夜游神)
    如你所说可以算出毛利润了,我的前台用的是VB,刷新后有些问题,我在调下。呵呵,小妹刚刚做东东,SQL正在学,好多都不会,老板又在催,哈,还是先把功能实现,优化还得以后再多多学。
    ...............................................................
    to :xeqtr1982(Visual C# .NET)
    计算列以前从没用过,刚刚才试下,都可以实现代码也简化些。
    谢谢啊,刚来CSDN不久,好多都是xeqtr1982给解决的,小妹在此谢谢啊!
      

  7.   

    TO:LouisXIV(夜游神)
    可以了。刚刚只做个测试,前台没加只插入了,并没保存就更新了。
    再次谢过,马上结帖。哈
      

  8.   

    我觉得应该用view来实现更好些
    ========
    欢迎使用www.bz2008.com 可以辅助生成大部分的程序代码,注册即可使用