问题标签 [sqltransaction]

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 回答
186 浏览

mysql - MySql:插入行时的事务安全

我想执行以下两个 MySQL 语句:

重要的是,第二个语句准确地更改了第一个语句返回的行(没有额外的行,也没有更少的行)。因此,我使用 auto_commit=false 执行事务并使用 select 语句的“for update”版本。

“For Update”会锁定它返回的所有行,因此在执行第二条语句时它们处于原始状态。但是插入呢?是否有可能另一个线程插入一个新行,其间有 field1=val1,然后被第二条语句更改?

还有一个问题:如果第二条语句不改变行本身,但执行以下操作,是否会有所不同?

如果(3)与(1)在同一个事务中,那么确保两个选择返回完全相同的元素吗?

编辑:

我正在使用 InnoDB 并且我阅读了一些关于下一个键锁定和间隙锁定的内容。据我了解,在执行(1)时,InnoDB 不仅会锁定选定的行,还会锁定访问的索引。

那么我是否可以说如果我在列“field1”上有一个索引就不会发生这个问题?如果没有索引怎么办?那不一样了吗?

0 投票
1 回答
6035 浏览

c# - 使用事务时出错

可能重复:
ExecuteNonQuery 要求命令在我的代码中有事务错误

当我使用上面的代码得到错误

当分配给命令的连接处于挂起的本地事务中时,ExecuteNonQuery 要求该命令具有事务。该命令的 Transaction 属性尚未初始化。

0 投票
1 回答
3690 浏览

sql - 事务如何与 node-postgres 一起工作?

我正在使用 node-postgres 以回调样式进行 SQL 查询。我有一个函数可以接收查询列表并在事务块中执行它们。我的理解是我使用 node-postgres 提交查询“BEGIN”,在我的事务块中提交我需要的所有查询,然后提交查询“COMMIT”。

但是,尽管我的查询是有效的(简单的插入,作为独立查询经过良好测试),并且一切都肯定以正确的顺序执行,但当我在事务块之后测试数据库的状态时,我得到了不一致的状态。有时我的所有插入都发生了,有时只有其中一些发生了。我的理解是事务块是原子的,因此在提交后立即使用 SELECT 查找块中的插入应该是全部或全部。

这是我的功能:

使用辅助函数 tryQuery:

对出了什么问题有任何想法吗?

0 投票
1 回答
3359 浏览

c# - 同一张表上的多个事务,同时

我遇到了一个问题,我有一个可以由多个线程编辑的表,每个线程创建一个事务来处理这个表,如果一个事务需要很长时间才能完成,其他线程将抛出异常“查询超时过期” . 我猜交易的某处有超时设置。

我可以使用线程锁来处理这个问题;但是,有没有办法在服务器端做到这一点?我可以在 SQL Server 中创建锁吗?任何帮助将不胜感激。

0 投票
2 回答
1729 浏览

sql-server - 如何在 sql server 2005 中的 try catch 中捕获错误时防止事务回滚

我有一个包含记录的表 Table1

这里我想将 F1 Varchar 的数据类型更改为 Decimal(3,0); 然后我创建一个具有新结构的新表。

我想通过将 varchar 显式转换为十进制来将旧表的每个记录插入到新表中。所以我在 try catch 块中写这个命令。如果产生错误,那么在 catch 块中我可以用它的默认值填充它。但是这整个工作是在开始事务和提交事务块之间执行的。因此,当 catch 块中捕获到错误时,无法执行进一步的工作,就会发生错误

当前事务无法提交,也无法支持写入日志文件的操作。回滚事务。

即使在 try catch 块中发生错误,如何防止此事务回滚。

0 投票
1 回答
8321 浏览

sql-server - 如何使用 try catch 管理嵌套事务

发生错误:

消息 3931,级别 16,状态 1,第 17 行当前事务无法提交,也无法回滚到保存点。回滚整个事务。

如何处理这个。

0 投票
1 回答
605 浏览

database - 程序中的事务与数据库中的事务

我是新程序员

  1. 我所知道的是有 2 种方式来进行 sql 事务控制。但我想知道的是

    1.1 什么时候应该在程序中使用事务,什么时候应该在数据库中使用事务。1.2哪个更好(现在我认为程序中的sql事务更好。但是我的老板想在数据库中使用sql事务)

  2. 从第一个问题开始。当我将数据插入主表和明细表时。

    下面是我老板的存储过程

    /li>

我必须发送数据,如......

我不同意。但他说“不想在程序中使用sql事务”。

你怎么看这个。哪个更好。

0 投票
2 回答
5640 浏览

sql - 使用触发器时 SQL 数据库处于锁定状态

我有一个死锁的问题..

我正在尝试为我的数据库的更新提供 sql 依赖项。

我通过在一系列表上创建触发器来做到这一点。修改表时,我在辅助表中增加一个整数,例如。[dbo].[计数器]。然后我在这个表上放置一个 SQL 依赖项,以了解哪个表是从代码更新的。

但是,我放置触发器的目标表可以在事务中使用,在这种情况下,很容易使事务死锁。

即 tbl1 在插入/更新/删除时触发以更新计数器表 tbl2 在插入/更新/删除时触发以更新计数器表

事务 A 发生在 thread1 tbl1 被修改,触发了 counter 表的更新

事务 B 发生在线程 2 tbl2 被修改,这触发了计数器表的更新,线程 2 现在被阻塞等待线程 1

同时在 thread1 上,事务 A 继续,并更新另一个表(tbl1 或 tbl2)

现在发生死锁,其中一个线程被选为受害者。

我的问题是,是否有更好的方法来创建触发器以消除死锁的可能性?任何人都知道 ASP.NET 中的默认 SQLDependency 如何解决这个问题?

0 投票
2 回答
1050 浏览

tsql - 带有表变量的 TSQL 范围

我有一个表列表,其中一些具有 Employee_ID 列。至少一张表缺少至少一个 Employee_ID。我想从其他表中找到缺少的 Employee_ID。

我运行以下命令,但在@temp_employees 上出现“必须声明标量变量”错误。我相信范围是正确的。

如何在 TSQL 中使用表变量 @temp_employees,同时保持其范围,以便在整个循环中使用它?

注意:多年来,该软件有许多版本,表结构也发生了许多变化。我不想为每个表结构更改编写特定于版本的脚本,因为缺少的 Employee_ID(s) 始终是软件中错误的根源。

0 投票
1 回答
14493 浏览

c# - SqlTransaction 支持多个 SqlConnections

所以我有多个SqlConnections我想在一个中使用SqlTransaction。我知道我可以只使用一个连接,但最终在每个连接中都有大量新声明的无用(连接完成后)变量,我需要程序尽可能快地保持。

我在一个using声明中都有每个连接。

我正在使用最新的 .NET 和 SQL Server 2008 R2。

可能吗?

另外,我已经看过:

如何在 .NET 中为多个 SqlConnections 使用单个 SqlTransaction?

没有人回答这个问题,平台已经过时了。