- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在 ROLLBACK TRANSACTION 上通读了 MSDN和 nesting transactions .虽然我看到了ROLLBACK TRANSACTION savepointname
的观点,看不懂ROLLBACK TRANSACTION transactionname
.
transactionname
时有效是最外层交易ROLLBACK
总是回滚整个事务“堆栈”,除非 savepointname
ROLLBACK
回滚所有事务(到
@@TRANCOUNT=0
)。我能看到的唯一区别是这个片段:
If a ROLLBACK TRANSACTION transaction_name statement using the name of the outer transaction is executed at any level of a set of nested transactions, all of the nested transactions are rolled back. If a ROLLBACK WORK or ROLLBACK TRANSACTION statement without a transaction_name parameter is executed at any level of a set of nested transaction, it rolls back all of the nested transactions, including the outermost transaction.
CREATE TABLE #TEMP (id varchar(50))
INSERT INTO #TEMP (id) VALUES ('NO')
SELECT id AS NOTRAN FROM #TEMP
SELECT @@TRANCOUNT AS NOTRAN_TRANCOUNT
BEGIN TRAN OUTERTRAN
INSERT INTO #TEMP (id) VALUES ('OUTER')
SELECT id AS OUTERTRAN FROM #TEMP
SELECT @@TRANCOUNT AS OUTERTRAN_TRANCOUNT
BEGIN TRAN INNERTRAN
INSERT INTO #TEMP (id) VALUES ('INNER')
SELECT id AS INNERTRAN FROM #TEMP
SELECT @@TRANCOUNT AS INNERTRAN_TRANCOUNT
ROLLBACK TRAN OUTERTRAN
IF @@TRANCOUNT > 0 ROLLBACK TRAN
SELECT id AS AFTERROLLBACK FROM #TEMP
SELECT @@TRANCOUNT AS AFTERROLLBACK_TRANCOUNT
DROP TABLE #TEMP
NOTRAN
--------------------------------------------------
NO
NOTRAN_TRANCOUNT
----------------
0
OUTERTRAN
--------------------------------------------------
NO
OUTER
OUTERTRAN_TRANCOUNT
-------------------
1
INNERTRAN
--------------------------------------------------
NO
OUTER
INNER
INNERTRAN_TRANCOUNT
-------------------
2
AFTERROLLBACK
--------------------------------------------------
NO
AFTERROLLBACK_TRANCOUNT
-----------------------
0
ROLLBACK TRAN OUTERTRAN
ROLLBACK TRAN
ROLLBACK TRANSACTION named_transaction
的意义何在? ?
最佳答案
保存点顾名思义:日志序列中的“保存点”。日志序列始终是线性的。如果您回滚到一个保存点,您将回滚您的事务在当前日志位置和保存点之间所做的一切。考虑你的例子:
LSN 1: BEGIN TRAN OUTERTRAN
LSN 2: INSERT INTO ...
LSN 3: BEGIN TRAN INNERTRAN
LSN 4: INSERT INTO ...
LSN 5: ROLLBACK TRAN OUTERTRAN
关于tsql - "ROLLBACK TRANSACTION named_transaction"有什么意义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1813769/
这两行的状态设置为 1。我想将它们设置为 0 并可视化 rollback 查询的结果。这个查询完成了这项工作: START TRANSACTION; UPDATE jkm_content SET st
通常当我做 $ rake db:rollback 它回滚一次迁移。但现在,反复多次,它已经回滚了 3 个步骤。 这种行为怎么来的? 我在 Rails 3.2.13 上。 最佳答案 您可以指定这样的步骤
不确定我是否在问正确的问题,但是这里... 我已连接到关闭自动提交的 postgres 实例。我看到的是,如果查询存在语法问题: select * fro table limit 400 ,我必须先回
Cassandra 2.0 documentation包含以下关于原子性的段落: For example, if using a write consistency level of QUORUM w
已关闭。此问题不符合Stack Overflow guidelines 。目前不接受答案。 这个问题似乎不是关于 a specific programming problem, a software
我在办公室运行本地主机 XAMPP 服务器用于测试目的。我正在旅行,决定在我的笔记本电脑上完成一些工作,因此我在我的笔记本电脑上安装了新版本的 XAMPP,复制了我的文件,但由于某种原因,我在我的笔记
我在 Grails 3 中使用 Spock 进行测试。一个特定的测试用例被破坏了,因为在这种情况下,Grails 在两个不同的 session 中与我的数据库对话。我的规范用 @Rollback 注释
我是 PostgreSQL/libpq 的新手。所以请帮我澄清我的困惑: 假设我首先执行“START TRANSACTION”并进行适当的错误检查 (PQresultStatus(res) != [p
问题 在遇到数据库完整性错误(SQLAlchemy 的要求)后调用 SQLAlchemy 的 session.rollback() 会导致所有 session 对象被释放。这包括之前选择创建的对象。
与使用 EF Core 管理交易相关的问题: IDbContextTransaction.Rollback() 是否有机会返回异常,以便将其放在 try block 中是否有意义? 即 try
在下面的代码中,当我在表中插入数据时,回滚的目的是什么,如果我想回滚,我不应该插入它,那么使用回滚的合适方法是什么? BEGIN TRANSACTION Insert into dimCustomr
我在 START TRANSACTION 和 COMMIT 之间执行了多个查询 SQL 语句。 如果出现任何问题,进程将在中间终止而不执行 COMMIT 并且数据库不会发生任何事情。到目前为止,没有执
我们可以在 Oracle 中创建保存点,然后我们可以通过调用 ROLLBACK TO SAVEPOINT 回滚到特定的保存点。 . UPDATE employees SET salary =
ROLLBACK TRAN 会回滚我的 SP 中的所有内容吗? (包括对另一个SP的调用) 示例: BEGIN TRAN INSERT INTO (table1) VALUES (1,'abc
我一直在尝试使用我们现有的 Spring JUnit 测试(通过 @TransactionalTestExecutionListener 运行或子类化 AbstractTransactionalUni
在我的托管 Bootstrap 的 bundle.wxs 中,我链接了多个包: 我正在订阅 ExecutePackageBegin/ExecutePackageComplete
此代码使用存储在 $in 中的所有查询进行交易。例如$in = "查询1;查询2;查询3;" 当其中一个失败时,它被回滚但没有效果,没有错误的查询被插入到数据库中 $conn = mysql_
我有以下代码在事务中执行数据库操作: try { //start transaction repository.startTrans
有一天,我注意到我的事务不接受 ActiveRecord::Rollback。我有一个这样的例子: 示例 ActiveRecord::Base.transaction do puts @shi
连接没问题,但是查询语句好像有问题。 query1 = """SELECT * FROM `DATABASE` WHERE `coin` = 'LTC'""" query2 = """SELECT *
我是一名优秀的程序员,十分优秀!