当前位置: 代码迷 >> Sql Server >> 请问一个触发器
  详细解决方案

请问一个触发器

热度:37   发布时间:2016-04-27 11:05:09.0
请教一个触发器
第一张表DispatchLists ,有3个字段cInvCode ,cFree1 ,cDefine22 
第二张表Inventory,有2个字段cInvCode ,cInvStd 
DispatchLists.cInvCode =Inventory.cInvCode 
当DispatchLists 表有增\改动作发生的时候,触发器生效,DispatchLists.cDefine22 这个字段
的内容=处理(Inventory.cInvStd+DispatchLists.cFree1) 这两个字段处理后的结果.

处理的要求是,我举个例子,有一行数据新增
表ID DispatchLists.cInvCode DispatchLists.cFree1 DispatchLists.cDefine22
1EDRFWPOQJ 101001 60  
Inventory.cInvCode Inventory.cInvStd 
101001 AA50-S-D
那么触发器触发后表ID为1EDRFWPOQJ的行DispatchLists.cDefine22的值更新为
AA50*60-S-D
这个处理的方式我用文字描述一下大致是Inventory.cInvStd字符串中出现数字之后,
将DispatchLists.cFree1 字段的字符串嵌入进去,并且要加一个符号“*”
不知道能否实现这个触发器,谢谢大家。

------解决方案--------------------

SQL code
CREATE TRIGGER xx ON DispatchListsFOR INSERT,UPDATE ASBEGIN    UPDATE t1    SET t1.cDefine22 = left(t2.cInvStd,CHARINDEX('-',t2.cInvStd)-1)+'*'+t3.cFree1+RIGHT(t2.cInvStd,len(t2.cInvStd)-(CHARINDEX('-',t2.cInvStd)-1))    FROM DispatchLists t1 JOIN Inventory t2 ON t1.cInvCode = t2.cInvCode    JOIN INSERTED t3 ON t1.主键= t3.主键    WHERE CHARINDEX('-',t2.cInvStd) > 0END
  相关解决方案