表名:cust_consume_b
原来的触发器:
create trigger bi_tr_i_pay on cust_consume_b for insert
as
begin
insert into pos_t_sale_flow(flow_no,vip_card,item_no,item_name,qty,amount,integral,oper_date)
select m.consume_id,m.vip_card,s.service_id,s.service_name,1,d.service_fee,isnull(s.integral,0),m.consume_date
from inserted m, consume_itm_b d,serviceitem s
where m.consume_id = d.consume_id
and d.service_name = s.service_name
--and m.consume_id = 'XF00000002 '
end
要求改成:
IF d.vip_card= ' ' then
----这里执行原语句
else
----这里执行另一语句
end if
没用过触发器,只能用VB语句表达下,大家帮下忙
------解决方案--------------------
我意思是当前表被插入一行时,根据当前插入的一行来判断,你这里好像是第一行吧?
怎么查询当前表.当前插入行.vip_card字段= ' ' ??
————————————————————————————————————
插入的时候每执行一次insert into...values...语句只能插入一行,所以那样判断没有问题。
如果你的insert是从一个字查询中一次插入多行语句,你想根据每次插入的当前行在触发器中执行你的逻辑,那么你应该使用逐行触发器的。SQL Server 2000及其以前的版本是没有行触发器的功能的,最新的SQL Server 2005好像提供这种触发器。你自己查查看吧,我没用过2005版本,想必这个逻辑不难实现。