问题标签 [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.
mysql - MySql:插入行时的事务安全
我想执行以下两个 MySQL 语句:
重要的是,第二个语句准确地更改了第一个语句返回的行(没有额外的行,也没有更少的行)。因此,我使用 auto_commit=false 执行事务并使用 select 语句的“for update”版本。
“For Update”会锁定它返回的所有行,因此在执行第二条语句时它们处于原始状态。但是插入呢?是否有可能另一个线程插入一个新行,其间有 field1=val1,然后被第二条语句更改?
还有一个问题:如果第二条语句不改变行本身,但执行以下操作,是否会有所不同?
如果(3)与(1)在同一个事务中,那么确保两个选择返回完全相同的元素吗?
编辑:
我正在使用 InnoDB 并且我阅读了一些关于下一个键锁定和间隙锁定的内容。据我了解,在执行(1)时,InnoDB 不仅会锁定选定的行,还会锁定访问的索引。
那么我是否可以说如果我在列“field1”上有一个索引就不会发生这个问题?如果没有索引怎么办?那不一样了吗?
c# - 使用事务时出错
当我使用上面的代码得到错误
当分配给命令的连接处于挂起的本地事务中时,ExecuteNonQuery 要求该命令具有事务。该命令的 Transaction 属性尚未初始化。
sql - 事务如何与 node-postgres 一起工作?
我正在使用 node-postgres 以回调样式进行 SQL 查询。我有一个函数可以接收查询列表并在事务块中执行它们。我的理解是我使用 node-postgres 提交查询“BEGIN”,在我的事务块中提交我需要的所有查询,然后提交查询“COMMIT”。
但是,尽管我的查询是有效的(简单的插入,作为独立查询经过良好测试),并且一切都肯定以正确的顺序执行,但当我在事务块之后测试数据库的状态时,我得到了不一致的状态。有时我的所有插入都发生了,有时只有其中一些发生了。我的理解是事务块是原子的,因此在提交后立即使用 SELECT 查找块中的插入应该是全部或全部。
这是我的功能:
使用辅助函数 tryQuery:
对出了什么问题有任何想法吗?
c# - 同一张表上的多个事务,同时
我遇到了一个问题,我有一个可以由多个线程编辑的表,每个线程创建一个事务来处理这个表,如果一个事务需要很长时间才能完成,其他线程将抛出异常“查询超时过期” . 我猜交易的某处有超时设置。
我可以使用线程锁来处理这个问题;但是,有没有办法在服务器端做到这一点?我可以在 SQL Server 中创建锁吗?任何帮助将不胜感激。
sql-server - 如何在 sql server 2005 中的 try catch 中捕获错误时防止事务回滚
我有一个包含记录的表 Table1
这里我想将 F1 Varchar 的数据类型更改为 Decimal(3,0); 然后我创建一个具有新结构的新表。
我想通过将 varchar 显式转换为十进制来将旧表的每个记录插入到新表中。所以我在 try catch 块中写这个命令。如果产生错误,那么在 catch 块中我可以用它的默认值填充它。但是这整个工作是在开始事务和提交事务块之间执行的。因此,当 catch 块中捕获到错误时,无法执行进一步的工作,就会发生错误
当前事务无法提交,也无法支持写入日志文件的操作。回滚事务。
即使在 try catch 块中发生错误,如何防止此事务回滚。
sql-server - 如何使用 try catch 管理嵌套事务
发生错误:
消息 3931,级别 16,状态 1,第 17 行当前事务无法提交,也无法回滚到保存点。回滚整个事务。
如何处理这个。
database - 程序中的事务与数据库中的事务
我是新程序员
我所知道的是有 2 种方式来进行 sql 事务控制。但我想知道的是
1.1 什么时候应该在程序中使用事务,什么时候应该在数据库中使用事务。1.2哪个更好(现在我认为程序中的sql事务更好。但是我的老板想在数据库中使用sql事务)
从第一个问题开始。当我将数据插入主表和明细表时。
下面是我老板的存储过程
/li>
我必须发送数据,如......
我不同意。但他说“不想在程序中使用sql事务”。
你怎么看这个。哪个更好。
sql - 使用触发器时 SQL 数据库处于锁定状态
我有一个死锁的问题..
我正在尝试为我的数据库的更新提供 sql 依赖项。
我通过在一系列表上创建触发器来做到这一点。修改表时,我在辅助表中增加一个整数,例如。[dbo].[计数器]。然后我在这个表上放置一个 SQL 依赖项,以了解哪个表是从代码更新的。
但是,我放置触发器的目标表可以在事务中使用,在这种情况下,很容易使事务死锁。
即 tbl1 在插入/更新/删除时触发以更新计数器表 tbl2 在插入/更新/删除时触发以更新计数器表
事务 A 发生在 thread1 tbl1 被修改,触发了 counter 表的更新
事务 B 发生在线程 2 tbl2 被修改,这触发了计数器表的更新,线程 2 现在被阻塞等待线程 1
同时在 thread1 上,事务 A 继续,并更新另一个表(tbl1 或 tbl2)
现在发生死锁,其中一个线程被选为受害者。
我的问题是,是否有更好的方法来创建触发器以消除死锁的可能性?任何人都知道 ASP.NET 中的默认 SQLDependency 如何解决这个问题?
tsql - 带有表变量的 TSQL 范围
我有一个表列表,其中一些具有 Employee_ID 列。至少一张表缺少至少一个 Employee_ID。我想从其他表中找到缺少的 Employee_ID。
我运行以下命令,但在@temp_employees 上出现“必须声明标量变量”错误。我相信范围是正确的。
如何在 TSQL 中使用表变量 @temp_employees,同时保持其范围,以便在整个循环中使用它?
注意:多年来,该软件有许多版本,表结构也发生了许多变化。我不想为每个表结构更改编写特定于版本的脚本,因为缺少的 Employee_ID(s) 始终是软件中错误的根源。
c# - SqlTransaction 支持多个 SqlConnections
所以我有多个SqlConnections
我想在一个中使用SqlTransaction
。我知道我可以只使用一个连接,但最终在每个连接中都有大量新声明的无用(连接完成后)变量,我需要程序尽可能快地保持。
我在一个using
声明中都有每个连接。
我正在使用最新的 .NET 和 SQL Server 2008 R2。
可能吗?
另外,我已经看过:
如何在 .NET 中为多个 SqlConnections 使用单个 SqlTransaction?
没有人回答这个问题,平台已经过时了。