在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 |
|
|
|
|
|