我有一个正在运行的Web应用程序,我想使用另一个应用程序访问sql db,以使用新计算更新其中一个表。我的用户在更新期间会注意到什么吗?如果他们在我更新的同时访问,或者是否有自动锁定,我会收到错误吗? TIA
答案 0 :(得分:3)
如果您的RDBMS有任何好处,它应该为您处理。
您可能希望确保“autocommit”已关闭,但只有在您完成更新后才会提交。
答案 1 :(得分:3)
通常在执行更新时会锁定行,并且任何可能使用这些行的SQL查询将“挂起”,直到更新完成,然后返回正确的数据。
有一些边缘情况例外,但一般来说我不会担心它,除非你做一些非常花哨的长时间运行更新,这将导致数据被锁定很长一段时间。 / p>
答案 2 :(得分:1)
根据他们的幸运程度,他们会在更新前或更新后看到值。通常这不是问题所以你可以完全忽略锁定问题。但是他们不会得到错误,除非他们试图自己锁定表。
答案 3 :(得分:1)
这取决于您拥有的DBMS以及您正在使用的隔离级别。 See here for what PostgreSQL documentation has to say.基本上,有许多不同的方法可以处理更新。在一端,与更新同时发生的读取可能会从部分提交的更新中获得不一致的数据。另一方面,事务完全同步。由于效率的原因,大多数DBMS倾向于在两者之间做一些事情。
答案 4 :(得分:1)
如果你使用具有事务能力的RDBMS,你不需要做锁定,它将为你完成。如果没有,您需要根据您使用的那个来锁定行或表。
大多数RDBMS系统确实有事务支持,所以这不用担心。
答案 5 :(得分:0)
没有自动锁定。如果您想要做的是快速,那么就不需要自动锁定,因为多次访问的概率真的低。
但是,如果您计划运行一些长时间的更新,则应该认真考虑在进行更新时将维护页面放在首页。