日期:2014-05-17  浏览次数:20436 次

请教一个触发器
第一张表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 DispatchLists
FOR INSERT,UPDATE 
AS
BEGIN
    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) > 0
END