如何执行事务以及不锁定表以供其他人执行更改?

时间:2016-08-01 12:16:12

标签: sql sql-server asp.net-mvc database database-design

我正在制作网络应用程序,我希望像Marks_Table这样的表一直可用,这样即使一位老师上传了标记,也不应阻止学生在这张桌子上看到他们的标记。

1 个答案:

答案 0 :(得分:0)

例如,学生A在表格中的等级为5 现在,当学生A执行查询时,他将看到5年级

现在,当教师忙于这张桌子上的交易时,学生得不到他的查询结果,直到老师完成,因为他的交易锁定了桌子。

你想要的是,当老师正在进行交易时,学生确实从他的查询得到了结果,他只会看到一个值5,因为这是他在这张表中的最后一个提交值,对吗? 换句话说,学生可以点击F5并看到他们的旧价值,直到老师提交新的价值观,这听起来像是一种正常的做事方式。

如果是这样,您可以尝试:(只需在数据库中执行一次)

ALTER DATABASE yourdatabase SET READ_COMMITTED_SNAPSHOT ON;

请参阅:https://www.brentozar.com/archive/2013/01/implementing-snapshot-or-read-committed-snapshot-isolation-in-sql-server-a-guide/

但是请记住,数据库中表的所有事务都应尽可能短,这实际上首先避免了问题。没有学生会抱怨如果他需要等待半秒才能在刷新后显示结果,他们会抱怨他们是否需要等待几分钟。