1
2
结合@tony's和@panagiotis答案,并扩展: 您在哪里提交此代码中完成的更新?你确定要完成吗? 这是你的场景吗?
受更新影响的行将被锁定,以防进一步更新,直到提交或回滚为止。如果从未显式提交或回滚,则后续更新将挂起。 如果要避免代码中的挂起,请执行
在进行更新之前。如果记录被锁定,则选择将返回一个错误,您可以捕获并处理该错误。 请让您的DBA尝试此查询(感谢Tom Kyte):
查看会话上所有排队的块。 |
2
1
|
3
1
如果有一个会话发出此更新而不提交或回滚,则该行将被该会话锁定,直到它提交或回滚为止。这就是你的遭遇吗? |
4
1
您确定参数
完全有可能是SOM未初始化的输入使其进入
例如,如果
使用字符串结束作为创建SQL语句的方法是一种不安全的做法,而且完全不必要。在.NET中,在SQL命令中使用参数非常容易,这使得SQL不太容易受到注入攻击,并且提高了它们的性能(通过减少执行语句解析的需要)。 下面是一个使用参数的示例:
除此之外,您还可以使用Oracle中的V$XXX表来研究是什么导致了您的查询性能不佳。如果您认为您有锁,可以查询
|
5
1
在创建命令对象之前,是否尝试打开连接? |
6
1
如果多个编写器同时尝试触摸一行,Oracle将锁定该行。是否有其他代码试图同时修改行或表?您是否在另一个打开的连接中执行了select for update语句? |
7
1
您是否尝试通过创建事务来指定隔离模式,例如
|
8
1
我对一件事很好奇。您可以尝试更改您的RETURN语句,使其位于using块之外吗? 即代替:
尝试
|
9
0
问题似乎是我不太了解我的工具。 我相信SQL开发人员在某个时候创建了锁,然后当我运行Web应用程序更新同一行时,它被锁定了。在我的挫折和无知中,我强制关闭了SQL开发人员,在数据库中留下了一个锁,如果没有DBA超级能力,我就无法清除它。 现在已经清除了锁并关闭了所有运行中的SQL开发人员副本,这段代码在我第一次发布的时候就可以运行了。(呸!) 感谢您的帮助,尤其是在我发布更新之前选择更新以查看我的更新是否将被拒绝的想法:) |
maddy · 如何根据oracle SQL中的某一列值进行排名 1 年前 |
kiric8494 · 显示以元音开头和结尾的城市名称 2 年前 |
Franz Biberkopf · Oracle:组合子查询和聚合函数 2 年前 |
BitLauncher · 甲骨文-如何模拟位列和布尔和/或? 2 年前 |
Arifullah · 如何从oracle中的列中删除特定的初始字符? 2 年前 |
Anar · Oracle SQL用户定义函数 2 年前 |
user1312312 · 如何为一组表编写通用触发器? 2 年前 |