SQL Server update语句执行顺序

关于SQL Server update语句执行顺序

背景

写了一个触发器当As表插入数据时,As表的主表A表t字段将写入触发器中运算的数据。在触发器中写了一个临时表来储存运算数据,之后用Update语句更新到表A的t字段中。
在向临时表中储存数据的语句中我加入了where条件,而更新语句中没有加入where条件。最终导致符合where条件的数据被更新,不符合where条件的数据t字段数据被清空了。由此我猜测sql server在执行update语句时是先根据条件把相应字段的数据清空再写入数据

代码

最开始只有HAVING后面的条件,update语句没有where条件。

INSERT INTO #T1(cNo, cTonnage ,cDate )
	SELECT R1.cNo,SUM( cMouldWeight) cTonnage,R1.cDate FROM RH_LONGAPPLY R1 LEFT JOIN RH_LONGAPPLYS R2 
	ON R1.RH_LONGAPPLY_PK=R2.RH_LONGAPPLY_PK GROUP BY R1.cNo,R1.cDate HAVING cDate>=DATEADD(d,-1 ,GETDATE())
	
	DECLARE @count int=0,@count1 INT
	SELECT  @count1=count(cNo) FROM  #T1 
	WHILE(@count<=@count1)
	BEGIN
		UPDATE RH_LONGAPPLY
		SET cTonnage = B.cTonnage
		FROM RH_LONGAPPLY A LEFT JOIN #T1 B ON A.cNo=B.cNo
		WHERE A.cDate>=DATEADD(d,-1 ,GETDATE())		
		SET @count=@count+1
	END  

版权声明:本文为JingMing9原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。