- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有 3 个表:
架构:
例如,我有这样的数据:
1> select id, iddep, idservice from transactions where id = 22
2> go
id iddep idservice
----------- ----------- -----------
22 6 12
我运行以下查询,结果是可预测的:
第一次连接查询:
1> begin tran
2> go
1> select id from transactions with (updlock) where id = 22
2> go
id
-----------
22
二次连接查询:
1> begin tran
2> go
1> delete from transactions with (nowait) where id = 22
2> go
SQL Server Error: 1222 Lock request time out period exceeded
这是 NOWAIT 提示的正常行为,描述内容 here
但是!如果我执行以下查询,结果会很奇怪!
第一个连接查询与第一个示例相同:
1> begin tran
2> go
1> select id from transactions with (updlock) where id = 22
2> go
id
-----------
22
二次连接查询:
1> begin tran
2> go
1> delete from services with (nowait) where id = 12
2> go
我只是尝试删除父行并且.. 没有任何反应!尽管有 nowait
提示,它只是等待行释放。当我释放该行时,父行将被删除。
那么,为什么我不像第一个示例那样只收到 1222 错误?
最佳答案
它就在您链接到的页面中,但可能不明显。 NOWAIT
:
Instructs the Database Engine to return a message as soon as a lock is encountered on the table.
NOWAIT
is equivalent to specifyingSET LOCK_TIMEOUT 0
for a specific table.
添加了强调
在您问题的最后一个案例中,DELETE
不是在等待锁定服务
(表) - 它正在等待用于锁定 transactions
,以便它可以验证不会违反外键约束。
同样的引用指出了解决它的方法:指定SET LOCK_TIMEOUT 0
在您的第二个连接上,它不会等待锁定任何表。
关于SQL Server delete nowait 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12794366/
1、UPDATE nowait 应用以下场景:查询某条数据,并对其开启数据库事务。如果查询的当前数据没有加锁,则正确返回结果,并对当前数据加锁,如果查询的当前数据已在事务中,已加锁。但返回异常信息:
我使用 RAISERROR 从存储过程中生成进度输出而不是使用 PRINT,以避免 PRINT 对输出进行缓冲。现在我发现 RAISERROR 将在 500 次打印后开始缓冲。有没有办法解决这种行为?
我之前问过一个关于如何执行 PRINT 的问题,以便在脚本的其余部分仍在运行时立即提供输出(请参阅: How to see progress of running SQL stored procedu
在我的 Rails 4 应用程序中,我对 Postgres 9.4 数据库进行了以下查询: @chosen_opportunity = Opportunity.find_by_sql( " UPD
我有 3 个表: 架构: 例如,我有这样的数据: 1> select id, iddep, idservice from transactions where id = 22 2> go id
pl/sql 中带有 SKIP 锁定的游标和 nowait 的区别? 最佳答案 我认为我找到的这张图片是描述差异的最好例子 Detailed Explanation 关于sql - SKIP 锁定和
在这种情况下,我们需要在游标中使用for update nowait。 最佳答案 使用for update nowait将导致行繁忙并获得锁,直到执行提交或回滚为止。 任何其他尝试获取锁的 sessi
我杀死了一个正在更新表的脚本。现在,当我重新运行脚本时, ORA-00054: resource busy and acquire with NOWAIT specified 我认为 table 被锁
为什么我在更新表时会收到此数据库错误? ERROR at line 1: ORA-00054: resource busy and acquire with NOWAIT specified or t
我有几个 T-SQL 存储过程,我在其中使用 Severity 参数为 0 的 RAISERROR 将进度消息打印到输出窗口。我已经在使用 WITH NOWAIT 来确保立即打印消息。 但是,无论我将
文档说(强调我的): FOR UPDATE, FOR NO KEY UPDATE, FOR SHARE and FOR KEY SHARE are locking clauses; they affe
我正在尝试使用可能的参数最小化某些函数 P做粒子群优化。你需要知道的是,这个过程需要为不同的索引计算一个特定的函数(我称之为 foo ) i (每个索引都链接到一组参数 P )。 foo的时间花在每个
对于 Oracle 数据库,以下程序将仅针对某些线程抛出 SQL 异常。为什么要将 resultSetConcurrency 从 CONCUR_UPDATABLE 降级为 CONCUR_READ_ON
查看文档here ,以下结构定义明确: #pragma omp parallel //Line 1 { #pragma omp for nowait //Line 3
我正在研究 OpenMP,遇到了以下示例: #pragma omp parallel shared(n,a,b,c,d,sum) private(i) { #pragma omp for no
我正在使用 Hibernate 3.6.10FINAL,我无法为 SQLServer2008 生成 nowait 命令。我曾尝试使用这两种方言(“SQLServer2008Dialect”和“SQLS
是否可以在 Hibernate 中执行 COMMIT WRITE BATCH NOWAIT? 最佳答案 我没有进行广泛的搜索,但找不到任何证据表明您可以在 JDBC 驱动程序级别访问此功能。 这让您可
我有一张 table tab1 (t_id, status)和表tab2 (id, t_id, status)在哪里t_id.tab2有外键引用 tab1.t_id . 假设 Oracle sessi
我已经坚持了几天了,但仍然不明白为什么: 我需要更新我的 Oracle 数据库中的记录,在执行更新查询之前,我想用“SELECT x FOR UPDATE NOWAIT”锁定数据,但是在调用 Exec
当某个数据库用户在数据库中插入、更新、删除一个表的数据,或者增加一个表的主键时或者表的索引时,常常会出现ora-00054:resource busy and acquire with nowait
我是一名优秀的程序员,十分优秀!