在A表建立instead of insert触发器,触发器里既有对A表的insert操作又有对A表的update操作,当我对A表连续插入数据100次,触发器里的insert语句执行了100次,而update执行了一次!!
请高手执教!!!!

解决方案 »

  1.   

    检查你的代码-----------你看下面的试验:create table a (a int)
    go
    create trigger tr_a on a
    instead of insert
    as
    begin
    insert a values(1)
    update a set a=a+1
    end
    go
    insert a values (100)
    select * from a
    insert a values (200)
    select * from a
    insert a values (200)
    select * from a
    go
    drop table a
      

  2.   

    ALTER      TRIGGER InsertForBILL_invoice ON BILL_invoice 
    instead of insert
    AS
           update BILL_invoice
           set BILL_invoice.expense = (BILL_invoice.expense + 1)       insert into BILL_invoice(subscriber_id,invoice_type)
           (select subscriber_id,invoice_type, from inserted)假设该表里有一条数据,expense=100,当对BILL_invoice 表插入100条数据时,数据库会有101条数据,但是第一条的expense 值是101,而不是200,请问为什么??
      

  3.   

    ALTER      TRIGGER InsertForBILL_invoice ON BILL_invoice 
    instead of insert
    AS
           update BILL_invoice
           set BILL_invoice.expense = BILL_invoice.expense + (select count(*) from inserted)       insert into BILL_invoice(subscriber_id,invoice_type)
           (select subscriber_id,invoice_type, from inserted)
      

  4.   

    --倒入100数据,只会触发1 次,触发器
    insert 表 select * from xx
    --循环insert 100次,会触发100次
    while ..
    insert 表 values (..)
      

  5.   

    楼上的插入到表a中的100,200等数据当然不再表里了,只是instead of insert触发器,触发器会取代你对表的insert操作,而进行触发器操作!!!