如何锁定除一个用户(管理员)以外的所有用户的所有数据库更新?

时间:2019-06-05 19:52:42

标签: c# asp.net oracle nhibernate

我们有一个流程,需要针对Web应用程序使用的DB进行所有这样的软化处理,并且在此流程执行期间,我们需要阻止所有其他更新。是否有任何全局方法可以通过nHibernate,.NET或直接在Oracle中进行?

最初的想法是拥有一个单记录的DB表来指示该进程是否正在运行,但是与此相关的是,我们将需要返回到每个保存/更新方法并进行更改以验证该记录是否存在或者不在保存/更新调用之前。

1 个答案:

答案 0 :(得分:1)

我对这种要求的反应是审查设计,因为在进行应用程序升级之外这是非常不寻常的。除此之外,还有几个选择:

关闭数据库,以独占模式打开它,进行更改,然后为所有人打开它。

尝试使用LOCK TABLE锁定所有必需的表。根据执行锁定的顺序,这可能会产生死锁异常。