日期:2014-05-18  浏览次数:20727 次

怎么在触发器里用IF语句
表名: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版本,想必这个逻辑不难实现。