Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.
使对数据库的更改永久生效,或终止用户定义的事务。
COMMIT [ WORK ]
COMMIT TRAN[SACTION] [ transaction-name ]
transaction-name 指派给此事务的可选名称。它必须是有效的标识符。只应在最外层的嵌套 BEGIN/COMMIT 语句对或 BEGIN/ROLLBACK 语句对中使用事务名。
有关 Adaptive Server Enterprise 和 SQL Anywhere 中嵌套事务的详细信息,请参见BEGIN TRANSACTION 语句 [T-SQL]。
可以使用一组选项来控制 COMMIT 语句的行为细节。请参见:
可以使用 Commit 连接属性返回当前连接的提交数。
语法 1 COMMIT 语句结束事务,并使在该事务期间所做的所有更改在数据库中永久生效。
所有数据定义语句都自动执行提交。有关信息,请参见每个 SQL 语句的 [副作用] 列表。
如果数据库服务器检测到任何无效的外键,则 COMMIT 语句将失败。此行为产生的结果是:不可能通过任何无效外键结束事务。通常,在每个数据处理操作中会检查外键的完整性。但是,如果数据库选项 wait_for_commit 设置为 On,或者使用 CHECK ON COMMIT 选项定义了具体的外键,则数据库服务器会将完整性检查推迟到执行 COMMIT 语句之后。
单独使用 COMMIT 等同于 COMMIT WORK。
语法 2 可以使用 BEGIN TRANSACTION 和 COMMIT TRANSACTION 语句对来构造嵌套事务。嵌套事务类似于保存点。当在一组嵌套事务的最外层执行时,此语句使数据库更改永久生效。当在事务内部执行时,COMMIT TRANSACTION 语句使事务嵌套级别减少一级。当事务被嵌套时,只有最外层的 COMMIT 可使数据库更改永久生效。
语法 2 是 Transact-SQL 扩展。
在 Interactive SQL 中,还可以通过下列操作执行 COMMIT:
按 Ctrl+Shift+C。
单击 [SQL] » [提交]。
在 Interactive SQL 中,通过 [SQL] 菜单或键盘快捷方式执行 COMMIT 不会修改 [SQL 语句] 窗格的内容,而是清除了 [结果] 窗格中的 [结果] 选项卡。
无。
除了使用 WITH HOLD 打开的游标之外,关闭所有游标。
删除此连接上声明的临时表的所有行,除非这些表是用 ON COMMIT PRESERVE ROWS 声明的。
如果数据库不是正在使用事务日志,则每个 COMMIT 操作都会引起隐式检查点操作。
SQL/2008 语法 1 是核心功能。语法 2 是 Transact-SQL 扩充。
下面的语句提交当前事务:
COMMIT;
以下 Transact-SQL 批处理语句报告 @@trancount 的连续值:0、1、2、1、0。
PRINT @@trancount BEGIN TRANSACTION PRINT @@trancount BEGIN TRANSACTION PRINT @@trancount COMMIT TRANSACTION PRINT @@trancount COMMIT TRANSACTION PRINT @@trancount go