首页 理论教育数据库事务处理语句,实用教程

数据库事务处理语句,实用教程

【摘要】:SQL Server还包括事务处理语句,将SQL Server语句集合分组后形成单个的逻辑工作单元。事务处理语句包括:BEGⅠN TRAN SACTⅠON语 句、COMMⅠT TRANSACTⅠON语 句、ROLLBACK TRANSACTⅠON语句和SAVE TRANSACTⅠON语句。如果将事务回滚到保存点,则根据需要必须完成其他剩余的T-SQL语句和COMMⅠT TRANSACTⅠON语句,或者必须通过将事务回滚到起始点完全取消事务。若要取消整个事务,请使用ROLLBACK TRANSACTⅠON transaction_name语句。这将撤销事务的所有语句和过程。

所有的T-SQL语句都是内在的事务。SQL Server还包括事务处理语句,将SQL Server语句集合分组后形成单个的逻辑工作单元。事务处理语句包括:

BEGⅠN TRAN SACTⅠON语 句、COMMⅠT TRANSACTⅠON语 句、ROLLBACK TRANSACTⅠON语句和SAVE TRANSACTⅠON语句。

1.BEGⅠN TRANSACTⅠON语句

BEGⅠN TRANTSACTⅠON语句定义一个显式本地事务的起始点,即事务的开始。其语法格式为:

BEGⅠN{TRAN|TRANSACTⅠON}

[{transaction_name|@tran_name_variable}

[WⅠTH MARK[′description′]]

]

[;]

说明:

①TRANSACTⅠON关键字可以缩写为TRAN:

②transaction name是事务名,@tran_name_variable是用户定义的、含有效事务名称的变量,该变量必须是字符数据类型。

③MTH MARK指定在日志中标记事务,description是描述该标记的字符串。

2.COMMⅠT TRANSACTⅠON语句

COMMⅠT TRANSACTⅠON语句标志一个成功的隐式事务或显式事务的结束。其语法格式为:(www.chuimin.cn)

COMMⅠT{TRAN|TRANSACTⅠON}[transaction_name|@tran_name_variable]][;]

这里需要强调的是,仅当事务被引用所有数据的逻辑都正确时,T-SQL语句才能发出COMMⅠT TRANSACTⅠON命令。当在嵌套事务中使用时,内部事务的提交并不释放资源或使其修改成为永久修改。只有在提交了外部事务时,数据修改才具有永久性,而且资源才会被释放。当@@TRANCOUNT大于1时,每发出一个COMMⅠT TRANSACTⅠON命令只会使@@TRANCOUNT按1递减。当@@TRANCOUNT最终递减为0时,将提交整个外部事务。

3.ROLLBACK TRANSACTⅠON语句

ROLLBACK TRANSACTⅠON语句将显式事务或隐式事务回滚到事务的起点或事务内的某个保存点,它也标志一个事务的结束,也称为撤销事务。其语法格式如下:

ROLLBACK{TRAN|TRANSACTⅠON}

[transaction_name|@tran_name_variable

|savepoint_name|@savepoint_variable]

[;]

ROLLBACK TRANSACTⅠON清除自事务的起点或到某个保存点所做的所有数据修改。它还释放由事务控制的资源。savepoint_name是SAVE TRANSACTⅠON语句中的savepoint_name。当条件回滚只影响事务的一部分时,可使用savepoint_name。@savepoint_variable是用户定义的、包含有效保存点名称的变量的名称,必须是字符数据类型。

4.SAVE TRANSACTⅠON语句

SAVE TRANSACTⅠON语句在事务内设置保存点。其语法格式为:

SAVE{TRAN|TRANSACTⅠON}{savepoint_name|@savepoint_variable}

用户可以在事务内设置保存点或标记。保存点可以定义在按条件取消某个事务的一部分后,该事务可以返回的一个位置。如果将事务回滚到保存点,则根据需要必须完成其他剩余的T-SQL语句和COMMⅠT TRANSACTⅠON语句,或者必须通过将事务回滚到起始点完全取消事务。若要取消整个事务,请使用ROLLBACK TRANSACTⅠON transaction_name语句。这将撤销事务的所有语句和过程。savepoint_name是分配给保存点的名称。@savepoint variable包含有效保存点名称的用户定义变量的名称。