我正在开发一个使用 ODBC 将数据存储到 2008 R2 Microsoft SQL Server 的 asp.net 网站应用程序。我对ODBC的理解是,它是一个开放的数据库连接,与数据库的连接可以保持打开状态,在此期间只有“一个连接”可以修改、更新、插入数据库。直到该连接关闭并打开另一个连接。该应用程序旨在允许多个用户会话同时打开与数据库的连接,我没有看到任何处理与数据库插入或修改相关的并发问题的客户端代码。不同会话中的多个用户(例如,三个单独的 Web 浏览器上的三个用户)如何能够安全地修改、更新和插入信息到一个数据库中;特别是当所有三个用户同时修改、删除或插入同一行时。数据库是否会自动提供锁并等待该锁从一个用户会话释放到下一个用户会话以解决此并发数据访问问题?
2 回答
缥缈止盈
TA贡献2041条经验 获得超4个赞
您不能与其他人同时修改同一表上的同一行。这是 ODBC 连接语句所固有的。例如,UserA 正在更新 Table1 并且 UserB 也在尝试在 Table1 上执行更新,如果两个用户之间有共同的行,ODBC 将抛出一个错误,反馈有关当前被锁定的数据或类似的东西(取决于您访问 ODBC 的方式)。
无论 ODBC 记录锁的乐观或悲观风格,只有一个用户可以同时修改相同的数据。
但是,如果在某些情况下发生的修改不发生冲突,则多个用户可以对同一个表进行更改(这将是锁定类型的差异)。
仅供参考 - 这不是一个真正的编码问题。
跃然一笑
TA贡献1826条经验 获得超6个赞
每个连接都是隔离的。你可以有 1000 多个连接。
Web 服务器利用许多 http 连接的好处,因此您不需要很多。
可以跨线程共享连接,但这不是一个好习惯。您可以从另一个会话中获得响应。
数据库使用锁管理隔离。一次只能有一个人拥有更新锁。
- 2 回答
- 0 关注
- 269 浏览
添加回答
举报
0/150
提交
取消