概述
USE [XXXXX]
GO
/****** Object: Trigger [dbo].[trg_Biz_Samp_19] Script Date: 2016/4/22 9:58:18 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
--------先接收任务再样品领取,结果登记提示--------------
ALTER trigger [dbo].[trg_Biz_Samp_19] ON [dbo].[biz_Samp]
AFTER insert,UPDATE
AS
BEGIN
IF UPDATE(SampStatusId)
BEGIN
declare @batchid uniqueidentifier = newid();
BEGIN TRAN
INSERT INTO GNotification(GContent, GNavigateUri, BizId, CreateBatchId)
SELECT '您有新的待办事项【结果登记】: ' , 'f103015' ,INSERTED.SampId, @batchid
FROM INSERTED
INNER JOIN DELETED ON DELETED.SampId = INSERTED.SampId
left join biz_DeptTask on biz_DeptTask.TaskId = INSERTED.TaskId
WHERE
INSERTED.SampStatusId != DELETED.SampStatusId
and INSERTED.SampStatusId = 420
and exists(select 1 from biz_DeptTask where TestStatusId >= 310 )
--and INSERTED.TaskId = biz_DeptTask.TaskId) ----确保是先接收了任务状态
INSERT INTO GNotificationReceiver(GNotiId, GReceiveUserId)
SELECT n.GNotiId, u.UserId FROM GNotification n
INNER JOIN biz_Samp s ON s.SampId = n.BizId
INNER JOIN biz_DeptTask dt on dt.TaskId = s.TaskId
INNER JOIN sys_User u ON u.DeptId = dt.DeptId AND (',' + s.TesterIds + ',') LIKE ('%,'+ CONVERT(varchar(50), u.UserSN) +',%')
----- 一个样品对应两个部门的两个人A,B,所以一个sampid 对应了两个主检人,比如:A接收,B不接收,A领取样品,应通知A,因为>=310,此时此两主检人链接的都是A的部门任务
-----我们要通知的那个主检人是A,:该部门任务的主检人部门=u1.deptid,筛选掉B。
----INNER JOIN后面的ON后的AND 等价于 WHERE 后面跟条件 。LEFT JOIN 则不然,ON后面不符合要求的空记录,只要左边有就会出来,有NULL。
WHERE n.CreateBatchId = @batchId AND dt.TestStatusId >= 310,
AND EXISTS(SELECT 1 FROM View_UserFucntion uf WHERE uf.UserId = u.UserId AND uf.FunctionId = CONVERT(INT, SUBSTRING(n.GNavigateUri, 2, 1000))) --用户必须是有功能权限的
GROUP BY n.GNotiId, u.UserId
COMMIT TRAN
END
END
最后
以上就是纯情跳跳糖为你收集整理的触发器,根据具体业务写弹窗提示的全部内容,希望文章能够帮你解决触发器,根据具体业务写弹窗提示所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复