BEGIN TRAN DECLARE @T TABLE(name VARCHAR(100)) UPDATE A SET type=1 OUTPUT DELETED.name INTO @T WHERE endtime<GETDATE()AND type=0 INSERT INTO B SELECT ROW_NUMBER()OVER(PARTITION BY T1.name ORDER BY GETDATE())+T2.num ,T1.name FROM @T T1 JOIN(SELECT MAX(num)num,name FROM B GROUP BY name)T2 ON T1.name=t2.name COMMIT TRAN
DECLARE @T TABLE(name VARCHAR(100))
UPDATE A
SET type=1
OUTPUT DELETED.name INTO @T
WHERE endtime<GETDATE()AND type=0
INSERT INTO B
SELECT ROW_NUMBER()OVER(PARTITION BY T1.name ORDER BY GETDATE())+T2.num
,T1.name
FROM @T T1 JOIN(SELECT MAX(num)num,name FROM B GROUP BY name)T2
ON T1.name=t2.name
COMMIT TRAN
我觉得没必要引入表变量,先insert,再update就可以了