这是第二个触发器,原理和第一个相同

create trigger [dbo].[cfq2] on [dbo].[ICStockBill]
for insert 
As
Begin
		IF Exists(select 1 from inserted where FTranType=1  and ISNULL(FPOStyle,0)=252)
		Begin
			update [dbo].[ICStockBill]
			set FHeadSelfA0148='成功'
			where FBillNo IN (SELECT FBillNo FROM inserted)
			RETURN
		END
END

下面是具体分析:

create trigger [dbo].[cfq2] on [dbo].[ICStockBill] 
for insert
 As

这句的主要作用是创建一个cfq2在ICStockBill(外购入库单)中,当有新的插入时

Begin
		IF Exists(select 1 from inserted where FTranType=1  and ISNULL(FPOStyle,0)=252)
		Begin

这一句的作用是如果存在FTranType=1同时FPOStyle=252(保存状态),其中inserted是触发器中专用,在sql语句中直接查询无法查到,
使用select 1 from table的结果是临时得到1列(列的值为1),其行数为表的记录数(行数),如果配合exists 语句则可以快速查询结果是否存在,而结果的具体数据不涉及到。
这一主要是快速查询到刚刚是不是插入一行数据采购入库单为保存状态的单据,如果存在就进行下一步操作

update [dbo].[ICStockBill]
			set FHeadSelfA0148='成功'
			where FBillNo IN (SELECT FBillNo FROM inserted)
			RETURN

这里主要是更新我新增的一个表头字段FHeadSelfA0148。当采购入库单保存时自动插入一个成功,这里用FBillNo时因为这个字段保存后会插入一个新的单据号到表单中便于识别。审核状态就不能用这个字段,

上一篇:Rename failed for user 'dbo' -MS SQL ERROR 15150


下一篇:SQLServer使用链接服务器远程查询