【问题标题】:How to Lock Oracle table for update using C#如何使用 C# 锁定 Oracle 表以进行更新
【发布时间】:2018-09-04 16:52:27
【问题描述】:

我在 Oracle 上有一个表,当用户更新时我需要其他用户不能同时更新。

每次只能更新 1 个用户。

数据库是Oracle,应用程序语言是C#

谢谢你的帮助

【问题讨论】:

  • 欢迎来到 Stackoverlfow。请收下Tour 并阅读How to Ask
  • 除非我弄错了,否则 Oracle 似乎已经记录了这个 here
  • 为什么需要这个? Oracle 会完全自动地处理适当的锁定。
  • 开始交易。更新/插入/删除。提交。
  • 看起来正是 Transactions 的作用。

标签: c# sql oracle


【解决方案1】:

这是一个奇怪的要求;数据库供应商尽其所能让许多并发用户正常工作,而现在您想做相反的事情。那好吧。

  • 开始时,将表锁定为独占模式,以便只有您可以访问它:lock table your_table in exclusive mode nowait;NOWAIT会通知其他用户它被锁定;否则,他们的会话将不得不等到您释放锁定。这表现得好像什么都没有发生;光标“无限期地”闪烁,人们通常认为数据库有问题
  • 做你想做的事
  • commit;释放锁

【讨论】:

  • 感谢您回答我的问题,我可以通过事务锁定表吗?因为我想更新数量字段,我不希望并发用户同时更新产品数量。
  • 你不必做任何“特别”的事情——完成后更新数量并提交。在您提交(或回滚)之前,没有人能够更新同一行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多