检查你的代码-----------你看下面的试验: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
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,请问为什么??
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)
--倒入100数据,只会触发1 次,触发器 insert 表 select * from xx --循环insert 100次,会触发100次 while .. insert 表 values (..)
楼上的插入到表a中的100,200等数据当然不再表里了,只是instead of insert触发器,触发器会取代你对表的insert操作,而进行触发器操作!!!
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
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,请问为什么??
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)
insert 表 select * from xx
--循环insert 100次,会触发100次
while ..
insert 表 values (..)