问题标签 [table-lock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
348 浏览

c# - ado.net 在任何地方捕获 sql 的表锁定异常

使用 ado.net 和捕获表锁定异常的最佳方法是什么iAnywhere.Data.SqlAnywhere.EF6?我的问题是,command.ExecuteNonQuery导致SAException包含消息的用户已锁定表中的所有行。

问题是,它是一个通用的SAException,而不是一个特定的 like SATableLockException,这会很好。

现在的问题是:如何在不使用错误消息的情况下检测该错误是表锁定异常?

非常感谢!

0 投票
1 回答
473 浏览

php - 当表先前被锁定时,是否可以使用 PDO lastInsertId()?

这个问题对我来说又很重要。有没有人有办法解决吗?

输出为:字符串(1)“ lastInsertId ”。但是当我锁定表时,lastInsertId 总是 0。所以这段代码总是返回 0:

结论:表被锁定时是否有可能以及如何获取 lastInsertId?还是我在某个地方错了?

@Ernestas 我尝试了你的建议,结果如下:(

代码:

MySQL 版本:5.6.26

0 投票
1 回答
456 浏览

c# - 表锁抛出异常 vs 表锁等待结束

目前我想知道,为什么有时ADO.NET会直接抛出表锁定异常,当表被锁定时,有时执行的语句会等待,直到表不再被锁定。表锁何时会导致异常,何时不会?可悲的是,我没有重现这两种情况的代码。

在任何地方是否有任何规则Sybase SQL指定这种行为?

谢谢你们!

0 投票
1 回答
906 浏览

sql-server - TABLOCKX 不工作

我正在使用我的 SQL Server 2012 试图获得锁。根据我看到的教程,我尝试测试获取表上的排他锁,以便没有其他查询能够从中读取信息,直到事务没有结束,但它只是不工作。即使它在视频中工作,这是我在第一个窗口中的查询:</p>

然后在第二个查询窗口中我只是尝试:

它工作得很好,尽管理论上应该有“排他”锁来防止这种情况。为什么会这样?我也试过

而且没有延迟,但选择总是成功的。有任何想法吗?

0 投票
0 回答
60 浏览

php - 如何在模态框中冻结表头

所以我尝试在普通页面上使用这些TableLock方法,它工作得很好,但我尝试在模态框上使用它,它没有工作。知道如何在模态框中使表格标题在它触及浏览器的顶部后冻结吗?我不希望整张桌子像这个冻结窗格一样停留在一个地方。

0 投票
1 回答
637 浏览

c# - 在给定时间内锁定 SQL Server 表并检查它是否被锁定

我想在 SQL Server 中锁定一个表给定的时间。我在代码级别使用 C#。我该如何实现呢,我还需要验证表是否被锁定。我对 SQL Server 中的锁定表了解不多。我想使用实体框架来实现它。任何帮助深表感谢。

0 投票
0 回答
42 浏览

php - 在使用 ajax 或不可能的情况下跨不同 php 文件执行 mysql 事务的正确方法是什么?

问题是关于 ajax、mysql、选择和更新、事务和锁等,很抱歉,如果我把背景故事讲了这么长时间,但为了理解我的需求,我认为这是必要的。这是一个很长的问题,但需求很简单,所以如果您通读这个问题并帮助我,我将不胜感激。

我在项目中使用/希望使用的技术:

ajax、php、mysql、事务和锁

背景故事:

所以这是在我的项目中困扰我很多的问题,这应该很常见,但我似乎无法在网上找到适合我情况的无缝解决方案。

我的项目很像一个网上商店,当不同的客户来购买一件商品时,我总是希望他们为该产品获得合适的库存。如果有其他顾客正在查看该商品并且可能会先结账,则该顾客来查看该商品的时间晚于这些顾客无法继续选择所需数量并继续结账,直到先到顾客完成查看此项目或完成结帐。这样可以防止商店超卖。

我目前知道并做过的事情:

现在,我知道我应该使用 sql 事务,或者如果客户通过使用 SELECT...FOR UPDATE 或只是锁定等来查看产品,我应该锁定表。我想我完全知道如何在编写在终端或 phpmyadmin 中串联 SQL。

但是,在我的情况下,我使用 ajax 调用来获取客户的产品页面(我的意思是我使用 ajax 从包含 SELECT 子句的 php 文件中获取数据),然后我使用另一个ajax 调用将签出数据发送到另一个 php 以在按下用于继续签出的按钮下更新表格:

例如在我的 get-order-detail.js(伪代码,但非常像我在项目中编写的真实代码):

并在 get-order-details.php(伪代码,消除 try-catch)中:

并在 check-out.php(伪代码,消除 try-catch)中:

我的问题是:

如您所见,这是对两个 php 文件的两个 ajax 调用(一个用于 SELECT 以显示 quantity_left 信息并提供结帐按钮,另一个用于在客户签出某些产品时更新 quantity_left),它们不能作为我曾经希望。那么是否可以将事务拆分为这两个 php 文件?如果是这样,我该怎么做?如果不可能,将这两个 php 组合成一个 php 并只使用一个 ajax 调用来执行这两个操作的更合适的方法是什么?

我希望在前端看到的内容:

客户在查看商品时,在先到客户完成对该商品的操作后,页面将不显示任何信息或延迟显示该商品的数量信息。如果数量可以实时更新也会更好(我知道也许我们必须为此使用主干,但如果简单的 ajax 无法实现,那么保持这种方式就可以了)。

非常感谢您解决了我的问题!

0 投票
0 回答
1112 浏览

oracle - Oracle中长存储过程中的锁定表

我在 oracle 中有一个存储过程,可以从 8-10 个表中删除行。我必须从说表“人”中删除一行。它有很多关系,如“Person_Health”、“Person_Claims”、“Person_Bills”等。同样,子表与其他表有关系。

我写了一个存储过程,循环遍历子表删除子记录,最后删除父表中的记录。我没有使用任何类型的锁定/等待机制(我是初学者,不确定使用哪一个)

有时,此过程会失败。翻译带有 SQL 状态“61000”、错误代码“60”、消息 [ORA-00060: 在等待资源时检测到死锁的 SQLException

问题是,由于在执行此存储过程时从应用程序的不同部分访问这些表的(选择/插入/更新)请求,它经常失败。

有没有办法在删除时单独锁定表?或者有没有其他更好的方法来做到这一点。

注意:一种方法可能是为这些表设置“ ON DELETE CASCADE ”,这将自动删除子记录,但这是不可能的

0 投票
1 回答
53 浏览

sql - 这个插件安全吗?

我有一个项目,我必须从远程源定期插入一堆记录(10 分钟内约 5k 条记录)。我有一个与最终目标表具有相同结构的临时表(没有主键,id 是 varchar 并且不是唯一的),为了确保不会有任何重复,我正在使用下一个 sql 命令:

完成此操作后,tmp_his 表将被截断。

这是否有可能在 g_his 表上获得隐式锁定并阻止任何其他插入?或者它可能是一个沉重的负担?或者有更好的主意吗?

数据库是 Postgres 9.6

0 投票
1 回答
1214 浏览

sql-server - SQL Server:在整个存储过程中锁定表

我有一个流式摄取到我的暂存表中。每 5 分钟我执行一个存储过程,将这个临时表中的所有数据插入/更新到我的final表中。

存储过程的过程:

知道如何明确地说我想锁定临时表以进行插入,直到我截断它?