怎么优化触发器过程

辉百元 2019-01-14 11:49:43
alter TRIGGER test22
ON [dbo].[ICStockBill]
after insert
AS
SET NOCOUNT ON
DECLARE @FTranType SMALLINT
SELECT @FTranType=FTranType
FROM INSERTED

if not UPDATE(fstatus)
return

if(@FTranType=24)
begin
update a set a.FHeadSelfY0237=b.FBillNo from PPBOM a ,ICStockBillEntry c,
ICStockBill b where c.FInterID=b.FInterID and a.FHeadSelfY0236=c.FICMOBillNo

end
生产领料单新增时 将 b.FBillNo反写到 a.FHeadSelfY0237 如何做到只刷新当前记录 而不刷以前的数据
...全文
91 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Hello World, 2019-01-14
  • 打赏
  • 举报
回复
把ICStockBill换成inserted,这个表就是代表当前写入的数据
Dear SQL(燊) 2019-01-14
  • 打赏
  • 举报
回复
有可能一次insert多条,条件写在where里面
ALTER TRIGGER test22
ON [dbo].[ICStockBill]
AFTER INSERT
AS
SET NOCOUNT ON;

IF NOT UPDATE(fstatus)
    RETURN;
 

UPDATE a
SET A.FHeadSelfY0237 = B.FBillNo
FROM PPBOM a,
        ICStockBillEntry c,
        INSERTED b
WHERE c.FInterID = b.FInterID
        AND a.FHeadSelfY0236 = c.FICMOBillNo
		AND FTranType=24;
二月十六 2019-01-14
  • 打赏
  • 举报
回复
ALTER TRIGGER test22
ON [dbo].[ICStockBill]
AFTER INSERT
AS
SET NOCOUNT ON;
DECLARE @FTranType SMALLINT;
SELECT @FTranType = FTranType
FROM INSERTED;

IF NOT UPDATE(fstatus)
    RETURN;

IF (@FTranType = 24)
BEGIN
    UPDATE a
    SET A.FHeadSelfY0237 = B.FBillNo
    FROM PPBOM a,
         ICStockBillEntry c,
         INSERTED b
    WHERE c.FInterID = b.FInterID
          AND a.FHeadSelfY0236 = c.FICMOBillNo;

END;

22,207

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 疑难问题
社区管理员
  • 疑难问题社区
  • 尘觉
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧