博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
一个SQLSERVER触发器的示例
阅读量:7067 次
发布时间:2019-06-28

本文共 2236 字,大约阅读时间需要 7 分钟。

CREATE TRIGGER WoStateChange on T_PD_WorkOrder AFTER UPDATEAS BEGIN	declare 	@WorkOrderID varchar(20),	@PlanID varchar(10),	@WoState_New varchar(10),	@WoState_Old varchar(10),		@PlanState varchar(10),	@WoRunCnt int		select @WorkOrderID=WorkOrderID,@PlanID=PlanID,@WoState_New=WOState from inserted 	select @WorkOrderID=WorkOrderID,@PlanID=PlanID,@WoState_Old=WOState from deleted 	--计划状态	select @PlanState=PlanState from T_PD_Plan where PlanID=@PlanID 			--1 工单: 锁定1 -> 下载完毕2	if(@WoState_Old='1' and @WoState_New='2')	begin		 if(@PlanState='1')		 begin			--计划状态由 制定1 变为 下载3			update T_PD_Plan SET PlanState='3' where PlanID=@PlanID		end	end--2 工单: 下载完毕2 -> 执行3	else if(@WoState_Old='2' and @WoState_New='3')	begin		 if(@PlanState='3')		 begin			--计划状态由 下载3 变为 执行4			update T_PD_Plan SET PlanState='4',FactStartTime=GETDATE() where PlanID=@PlanID		end	end--3 工单: 执行3 -> 完成4	else if(@WoState_Old='3' and @WoState_New='4')	begin		select @WoRunCnt=COUNT(*) from T_PD_WorkOrder where PlanID=@PlanID and (WOState='1' or WOState='2' or WOState='3')		--计划状态由 执行4 变为 完成5		if(@PlanState='4' and @WoRunCnt=0)		begin						update T_PD_Plan SET PlanState='5',FactEndTime=GETDATE() where PlanID=@PlanID		end	end--4 工单: 锁定1或下载完成2 -> 废弃5	else if((@WoState_Old='1' or @WoState_Old='2') and @WoState_New='5')	begin		select @WoRunCnt=COUNT(*) from T_PD_WorkOrder where PlanID=@PlanID  and (WOState='1' or WOState='2' or WOState='3')		 if(@PlanState='4' and @WoRunCnt=0)		 begin			--计划状态由 执行4 变为 完成5			update T_PD_Plan SET PlanState='5',FactEndTime=GETDATE() where PlanID=@PlanID		end	end--5 工单: 下载完成2 -> 锁定1	else if(@WoState_Old='2' and @WoState_New='1')	begin		--获取工单 执行 或 完成 的数量		select @WoRunCnt=COUNT(*) from T_PD_WorkOrder where PlanID=@PlanID and (WOState='3' or WOState='4')		 if(@WoRunCnt=0)		 begin			--计划没有对应执行或完成的工单,清空计划开始和结束时间			update T_PD_Plan SET PlanState='3',FactStartTime=null,FactEndTime=null where PlanID=@PlanID		end		--获取工单 执行 或 完成 的数量		select @WoRunCnt=COUNT(*) from T_PD_WorkOrder where PlanID=@PlanID and (WOState='3' or WOState='4' or WOState='2')		if(@WoRunCnt=0)		 begin			--没有 下载完毕2,运行3,完成4 的工单,计划变为 制定1状态			update T_PD_Plan SET PlanState='1' where PlanID=@PlanID		end	endEND

  

转载于:https://www.cnblogs.com/gsk99/p/4763442.html

你可能感兴趣的文章
JAVA UUID 生成唯一标识
查看>>
spring学习笔记(4)依赖注入详解
查看>>
菜鸟学自动化测试(五)-----selenium命令之定位页面元素
查看>>
【SICP练习】64 练习2.35
查看>>
PSK星座对象(constellation.cc)
查看>>
Linux链接脚本学习--lds
查看>>
Android将list数据通过LitePal保存到本地(集合保存到本地)
查看>>
hdu 1285 确定比赛名次
查看>>
Eureka微服务实战-服务提供者
查看>>
简单的原生ajax
查看>>
h5开发坑点小总结
查看>>
几分钟内提升技能的8个 JavaScript 方法!
查看>>
mac显示隐藏文件
查看>>
Android 插件化原理-好文收集(陆续中。。。)
查看>>
双亲委派模型与Tomcat类加载架构
查看>>
Highcharts tooltip显示数量和百分比
查看>>
小程序兼容iphoneX(齐刘海)代码,mpvue的写法
查看>>
小米设备怎么不ROOT激活Xposed框架的步骤
查看>>
Vue Router
查看>>
你所听到的技术原理、技术本质到底是什么?
查看>>