回答

收藏

在SQL Server中更新后是否需要执行Commit语句

技术问答 技术问答 352 人阅读 | 0 人回复 | 2023-09-14

我已经通过SQL Server管理器对记录进行了一些更新。
( K! N7 k8 C  g由于Update语句没有显式提交,因此我尝试手动编写它。9 ^% W# [: r4 X+ }/ k2 Y
Update mytable
- \% Z5 m: h. ?) h8 gset status=0;
# ?* [2 w( W1 k* h  z3 @2 T+ MCommit;) ~2 B% `2 F+ _
我收到消息,因为Commit没有开始交易
. L3 G5 u7 S% ~) Q) m7 g+ O, ]! B               
" [2 G! {% u" G# f解决方案:# T7 a# R7 A8 Y( c3 w) L8 A/ o& Q
                4 E7 g  l: S1 B3 A+ ]

* s2 ^" J# v# ^+ \* k8 a8 ~& w2 J3 N
& Q- H$ [3 T, h$ {$ [% `                SQL Server Management Studio的隐式提交已打开,因此所有执行的语句均被隐式提交。
0 j5 h9 l( Z8 i如果您来自Oracle背景,这可能是一件令人恐惧的事情,在Oracle背景中,默认情况是不自动提交命令,但这并不是什么大问题。
. _+ X, v& ]4 r! R如果您仍想使用临时交易,则可以随时执行
, o) G& l( ]7 YBEGIN TRANSACTION
: O& O. N( t" T& b- K在SSMS中运行,然后系统会等待您提交数据。
, Z, v4 E, R! ?如果要复制Oracle行为并启动隐式事务,则每当发出某些DML / DDL时,都可以在以下位置设置SET IMPLICIT_TRANSACTIONS复选框:
* _. C) @1 R8 q2 xTools -> Options -> Query Execution -> SQL Server -> ANSI
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则