对于批量刷新是需要对2张表进行操作,第一次操作是对表1进行插入操作,第二次是对表2进行插入操作需要表1 的id值
但是由于是批量的所以就不能用@@identity可以采用在表1建一个字段用来表示刚才插入的行再对标表2进行插入操作,然后在更新表为原状态,例如:
INSERT Equipment
SELECT Shopid,EqClassid,EqUpLev,100 StatusFlag FROM EquipmentUp_Course WHERE Eqid=0 AND EqUpTime< =@Time
IF @@error>=1
BEGIN
ROLLBACK tran
SET @Result=2------------------------------操作失败
RETURN
END
INSERT EqGrid(EqId)
SELECT Id FROM Equipment WHERE EqClassid=2001 AND StatusFlag=100
UNION ALL
SELECT Id FROM Equipment WHERE EqClassid=2001 AND StatusFlag=100
END
UPDATE Equipment
SET StatusFlag=0
WHERE StatusFlag=100
或者采用 在流程的开始处 就给表1和表2插入值, 这样需要一个字段来表示 此行(设备)是否为可用状态,以及在所有的查询中都需要在where条件中添加这个字段的过滤(个人感觉这样做比较麻烦)
但是由于是批量的所以就不能用@@identity可以采用在表1建一个字段用来表示刚才插入的行再对标表2进行插入操作,然后在更新表为原状态,例如:
INSERT Equipment
SELECT Shopid,EqClassid,EqUpLev,100 StatusFlag FROM EquipmentUp_Course WHERE Eqid=0 AND EqUpTime< =@Time
IF @@error>=1
BEGIN
ROLLBACK tran
SET @Result=2------------------------------操作失败
RETURN
END
INSERT EqGrid(EqId)
SELECT Id FROM Equipment WHERE EqClassid=2001 AND StatusFlag=100
UNION ALL
SELECT Id FROM Equipment WHERE EqClassid=2001 AND StatusFlag=100
END
UPDATE Equipment
SET StatusFlag=0
WHERE StatusFlag=100
或者采用 在流程的开始处 就给表1和表2插入值, 这样需要一个字段来表示 此行(设备)是否为可用状态,以及在所有的查询中都需要在where条件中添加这个字段的过滤(个人感觉这样做比较麻烦)