sqlserver,有表A更新数据是 先读取要更改的数据的主要字段,例如字段1、2、3存在临时表内,然后用关键字段关联表A后先delete后insert,另一个窗口有查询语句此时查询读取该表,但当整个delete和insert时间比较慢时,会导致另一个窗口查询了delete后的数据,造成幻读,有什么办法可以解决此问题吗?
将删除和插入放入事务里面
BEGIN TRY
BEGIN TRANSACTION
DECLARE
/*删除、插入sql*/
COMMIT TRANSACTION
END TRY
BEGIN CATCH
SELECT ERROR_NUMBER() AS ERRORNUMBER
ROLLBACK TRANSACTION
END CATCH
-----------
或者查询的时候加上WITH(READPAST) SELECT * FROM A WITH(READPAST)