c# - odbc如何允许多个会话访问和修改数据库
问题描述
我正在开发一个使用 ODBC 将数据存储到 2008 R2 Microsoft SQL Server 的 asp.net 网站应用程序。
我对ODBC的理解是,它是一个开放的数据库连接,与数据库的连接可以保持打开状态,在此期间只有“一个连接”可以修改、更新、插入数据库。直到该连接关闭并打开另一个连接。
该应用程序旨在允许多个用户会话同时打开与数据库的连接,并且我看不到任何客户端代码正在处理有关插入或修改数据库的并发问题。
不同会话中的多个用户(例如,三个不同 Web 浏览器上的三个用户)如何能够安全地修改、更新和插入信息到一个数据库中;特别是当所有三个用户同时修改、删除或插入同一行时。数据库是否自动提供锁并等待该锁从一个用户会话释放到下一个用户会话以解决此并发数据访问问题?
解决方案
您不能与其他人同时修改同一张表上的同一行。这是 ODBC 连接语句中固有的。例如,UserA 正在更新 Table1 并且 UserB 也在尝试对 Table1 执行更新,如果两个用户之间有共同的行,则 ODBC 将抛出一个错误,并反馈当前被锁定的数据或类似的东西(取决于您如何访问 ODBC)。
无论 ODBC 记录锁的乐观或悲观风格,只有一个用户可以同时对相同的数据进行修改。
但是,如果在某些情况下发生的修改没有发生冲突,则多个用户可以对同一个表进行更改(这将是锁定类型的差异)。
仅供参考 - 这不是一个真正的编码问题。
推荐阅读
- reactjs - 如何在 React 中使用 fetch 发送带有 CSRF cookie 的请求
- python - 如何使用修改过的熊猫数据框的 csv 更新 postgreSQL?
- wordpress - 最近使用 Elementor 的帖子小部件查看的 Woocommerce 产品
- entity-framework-core - 使用“无法更新标识列 ID”的 DB First 方法更新 SQL Server 中的多个表时出错。如何解决这个问题?
- python - 在 Jupyter Lab 中绘图输出空白图
- testing - TestCafe - 未定义的字符串 - 尝试将 Yaml 文件中的变量传递回 TestCafe 以选择 URL
- python - 当我按下按钮时,只有最后按下的按钮会将我保存在 csv 文件中。如何将所有数据保存在 csv 中?
- mysql - 如何解决 laravel 中的 php artisan 问题
- angular - Angular shouldReuseRoute 方法破坏了 url
- r - 使用pivot_wider后总结