srg*_*ggd 3 sql-server transaction
请问这个操作是什么意思?
if @@trancount > 0 commit tran
Run Code Online (Sandbox Code Playgroud)
在那之后
SET IMPLICIT_TRANSACTIONS ON
Run Code Online (Sandbox Code Playgroud)
或者
SET IMPLICIT_TRANSACTIONS OFF
Run Code Online (Sandbox Code Playgroud)
尽管我在网上搜索了很多,但我不明白这一系列命令的含义。
小智 5
我认为有两个概念你需要理解:
IF @@trancount > 0 COMMIT TRANSACTION
这会检查脚本中是否仍有任何打开的事务,或者如果 IMPLICIT_TRANSACTIONS 处于打开状态,则该事务将会存在。如果在执行 COMMIT 之前不检查打开的事务,您将收到以下错误:
COMMIT TRANSACTION 请求没有对应的 BEGIN TRANSACTION。
隐式交易
为了简化这一点,当 IMPLICIT_TRANSACTIONS 为 ON 时,如果尚未打开任何事务,则在特定语句之前有一个不可见的 BEGIN TRANSACTION(请参阅此处的列表)。当 IMPLICIT_TRANSACTIONS 为 OFF 时,您的语句处于自动提交模式
如果您向我们提供代码示例,我们也许能够更具体地回答您的问题。您可以使用此代码来查看这些命令如何影响语句:
/*
SET IMPLICIT_TRANSACTIONS ON
SET IMPLICIT_TRANSACTIONS OFF
*/
--BEGIN TRANSACTION --Uncomment if IMPLICIT_TRANSACTIONS is ON
CREATE TABLE Test (col int)
DROP TABLE Test
SELECT @@TRANCOUNT
BEGIN TRANSACTION
SELECT @@TRANCOUNT
COMMIT
SELECT @@TRANCOUNT
COMMIT
SELECT @@TRANCOUNT
--When IMPLICIT_TRANSACTIONS is ON, SQL will begin a new transaction count here,
--You need to explicitly end the transaction at the end
CREATE TABLE Test (col int)
DROP TABLE Test
SELECT @@TRANCOUNT
IF @@TRANCOUNT > 0
COMMIT
SELECT @@TRANCOUNT
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
13758 次 |
最近记录: |