我正在使用一个使用ODBC将数据存储到2008 R2 Microsoft SQL Server的asp.net网站应用程序。
我对ODBC的理解是它是一个开放的数据库连接,在这种连接中,与数据库的连接可以保持打开状态,并且在此期间只有一个连接"可以修改,更新,插入数据库。直到该连接关闭,另一个连接打开。
该应用程序旨在允许多个用户会话同时打开与数据库的连接,并且我没有看到任何处理有关插入或修改数据库的并发问题的客户端代码。
单个会话中的多个用户(例如,三个不同的Web浏览器上的三个用户)如何能够安全地修改,更新和插入信息到一个数据库中;特别是当所有三个用户同时修改,删除或插入同一行时。数据库是否自动提供锁定并等待该锁定从一个用户会话释放到下一个用户会话以解决此并发数据访问问题?
答案 0 :(得分:1)
您无法与其他人同时修改同一桌面上的同一行。这是ODBC连接语句中固有的。例如,UserA正在更新Table1并且UserB也尝试在Table1上执行更新,如果两个用户之间存在共同的行,则ODBC将抛出错误,其中包含有关当前锁定的数据或类似内容的反馈(取决于您如何访问ODBC。)
无论乐观或悲观的ODBC记录锁定风格如何,只有一个用户可以同时修改相同的数据。
但是,如果在某些情况下发生的修改中没有发生冲突,则多个用户可以对同一个表进行更改(这将是锁定类型的差异)。
仅供参考 - 这不是一个编码问题。
答案 1 :(得分:0)
每个连接都是隔离的。你可以有1000个连接。
Web服务器的作用是许多http连接,因此您不需要太多。
可以跨线程共享连接,但这不是一个好习惯。您可以从另一个会话中获得响应。
数据库使用锁管理隔离。一次只能有一个人拥有更新锁。