sql server 触发器实例

if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[tr_WorkOrder_u]') and OBJECTPROPERTY(id, N'IsTrigger') = 1)
drop trigger [dbo].[tr_WorkOrder_u]
GO
SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO
CREATE TRIGGER dbo.tr_WorkOrder_u ON WorkOrder
FOR UPDATE AS
IF UPDATE(CancelQty) or UPDATE(FinishedQty) or UPDATE(State) begin
DECLARE @WorkOrderId int
,@Createby int
,@planType INT

SELECT TOP 1 @WorkOrderId=a.Id,@Createby=a.CreatedBy,@planType=b.PlanType FROM inserted a,ProductionPlanning b where a.Id=b.Id and a.State=3

IF @@ROWCOUNT>0
if (@planType=2 or exists(select 0 from DispatchList where WorkOrderId=@WorkOrderId))
insert dbo.SysSignInfo(ObjectName,ObjectId,ChangeFlag,StrExt1,StrExt2,CreatedBy,ModifiedDate,ModifiedBy,State)
values('WorkOrderInfo',@WorkOrderId,1,'','',@Createby,null,0,0)

end

猜你喜欢

转载自www.cnblogs.com/mjw1013/p/9046082.html