访问除事务SQL Server中的记录以外的其余记录

时间:2018-07-05 17:04:00

标签: sql-server database

我正在尝试在SQL Server中完成一项任务。我正在共享示例问题,因为我无法共享整个任务说明。

问题:我们有一个名为Person的表,如下所示:

Person_Id   Person_Name   Person_Age
---------   -----------   ----------
        1           AAA           25
        2           BBB           25
        3           CCC           25
        4           DDD           25

在该表中,我想使用将要保存在Person_Id = 4中的TRANSACTION

Person_Id   Person_Name   Person_Age
---------   -----------   ----------
        4           DDD           25

在执行上述交易时,用户希望访问(INSERT, UPDATE, DELETE)下表中的所有其他记录(Person_Id = 4除外):

Person_Id   Person_Name   Person_Age
---------   -----------   ----------
        1           AAA           25
        2           BBB           25
        3           CCC           25

我尝试过的事情:

我尝试使用NOLOCK, ROWLOCK,但无法实现。请帮助我实现此方案。我也尝试过此link。按照此链接,使用

SET TRANSACTION ISOLATION LEVEL SERIALIZABLE;

SELECT查询正在获取未修改的数据。例如,如果我尝试UPDATE中的记录TRANSACTION并且记录已更新,但是TRANSACTION忙于执行其他语句。

Person_Id   Person_Name   Person_Age
---------   -----------   ----------
        4           DDD           25

现在,当其他连接尝试对表中的记录进行SELECT时,将返回所有其他记录以及记录:Person_Id = 4(具有旧值)。

  

SERIALIZABLE指定以下内容:

     

语句无法读取已修改但尚未读取的数据   由其他交易承诺。

从上面开始,当我使用SERIALIZABLE隔离时,它仍然返回OLDER记录Person_Id = 4。在这种情况下,我不需要。

我想获取除TRANSACTION中的记录以外的所有其他记录。

换句话说,如果一条记录被锁定在TRANSACTION中,则该记录不应出现在具有不同连接的任何其他SELECT STATEMENT EXECUTION中。

0 个答案:

没有答案