zoukankan      html  css  js  c++  java
  • 三大常用关系型数据库事务详解之二:基本事务命令

    二、事务基本命令介绍

    说明:命令中,

    | (垂直条) 分隔括号或大括号中的语法项。 只能使用其中一项。
    [ ](方括号) 可选语法项。 不要键入方括号。
    {}(大括号) 必选语法项。 不要键入大括号。

     1. SQL SERVER

    1) BEGIN { TRAN | TRANSACTION } [ { transaction_name | @tran_name_variable } [ WITH MARK [ 'description' ] ] ] [ ; ]

    表示显式地开启一个名称为transaction_name或@tran_name_variable的值的本地事务。

    2)BEGIN DISTRIBUTED { TRAN | TRANSACTION } [ transaction_name | @tran_name_variable ] [ ; ]

    表示显式地开启一个名称为transaction_name或@tran_name_variable的值的分布式事务

    3)COMMIT [ { TRAN | TRANSACTION } [ transaction_name | @tran_name_variable ] ] [ WITH ( DELAYED_DURABILITY = { OFF | ON } ) ] [ ; ]

    表示提交事务并释放事务使用资源,自事务开始以来的所有数据变更都会成为数据库的永久部分。中括号中内容可以省略,所以COMMIT事务的提交 与COMMIT TRANSACTION功能相同。

    4)COMMIT [ WORK ] [ ; ]

    提交并结束事务。与COMMIT TRANSACTION 功能相同,但 COMMIT TRANSACTION 接受指定事务名称。 此语法与 SQL-92 兼容。

    5)ROLLBACK { TRAN | TRANSACTION } [ transaction_name | @tran_name_variable | savepoint_name | @savepoint_variable ] [ ; ]

    表示将事务回滚到起点或者指定保存点,以清除自事务的起点到某个保存点的所有数据更改,并释放相关资源。中括号中内容可以省略,ROLLBACK 事务的回滚与ROLLBACK TRANSACTION功能相同。

    6)ROLLBACK [ WORK ] [ ; ]

    将事务回滚到事务的起点。与 ROLLBACK TRANSACTION 功能相同,但 ROLLBACK TRANSACTION 可以指定事务名称。此ROLLBACK 兼容 ISO 标准。

    嵌套事务时,ROLLBACK WORK 始终回滚到最远的 BEGIN TRANSACTION 语句,并将 @@TRANCOUNT 系统函数减为 0

    7)SAVE { TRAN | TRANSACTION } { savepoint_name | @savepoint_variable } [ ; ]

    在事务内设置事务保存点。savepoint_name是分配给保存点的名称。@savepoint_variable是包含有效保存点名称的用户定义变量的名称。

    8)SET TRANSACTION ISOLATION LEVEL { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SNAPSHOT | SERIALIZABLE }

    设置事务隔离级别。

    BEGIN TRANSACTION TR_ACCOUNTTRANSFER;
    --A账号中减去1000元
    UPDATE [dbo].[ACCOUNT] 
      SET AMOUNT = AMOUNT -1000.00
    WHERE [NAME] = 'A';
    
    --B账号中加上1000元
    UPDATE [dbo].[ACCOUNT]
      SET AMOUNT = AMOUNT + 1000.00
    WHERE [NAME] = 'B';
    COMMIT TRANSACTION TR_ACCOUNTTRANSFER;

    2. MYSQL

      MySQL 中,只有使用了Innodb数据库引擎的数据库或表才支持事务。

    1)START TRANSACTION | BEGIN [WORK]

    START TRANSACTIOn或BEGIN [WORK]都用来开启事务。

    2)COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]

    提交当前事务,使自事务开始后的变更成为永久变更。

    3)ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]

    回滚事务到事务起点,取消事务期间的所有变更。

    4)SAVEPOINT identifier

    在事务中创建指定标识符的保存点

    5)ROLLBACK [WORK] TO SAVEPOINT identifier

    把事务回滚到指定的事务保存点。

    6)RELEASE SAVEPOINT identifier

    删除指定的事务保存点。

    7)SET [GLOBAL | SESSION] TRANSACTION ISOLATION LEVEL 

    { READ UNCOMMITTED | READ COMMITTED | REPEATABLE READ | SERIALIZABLE }

    设置事务隔离等级。

    BEGIN
    --A账号中减去1000元
    UPDATE ACCOUNT 
      SET AMOUNT = AMOUNT -1000.00
    WHERE NAME = 'A';
    
    --B账号中加上1000元
    UPDATE ACCOUNT
      SET AMOUNT = AMOUNT + 1000.00
    WHERE NAME = 'B';
    COMMIT;

    3. ORACLE

       Oracle事务起始于第一条SQL语句的执行,不需要特别指定事务的开始和结束,一个事务结束就意味着下一事务开始。事务终止于下列四种情况:

    • COMMIT或不带有SAVEPOINT子句的ROLLBACK命令。
    • 用户运行DDL命令时,隐式提交。DDL命令如:CREATE,DROP,RENAME, or ALTER。
    • 断开数据库连接时。
    • 客户进程异常终止,导致事务隐式回滚。

    1)COMMIT

    提交事务中所有更改,结束事务。

    2)ROLLBACK

    回滚事务中所有更改,结束事务。

    3) SAVEPOINT identifier

    创建保存点,以便可以事务中更改回滚到这个保存点。

     4)ROLLBACK TO SAVEPOINT identifier

    回滚事务中的更改到指定保存点。

    5)RELEASE SAVEPOINT identifier

    删除指定保存点。

    6)SET TRANSACTION [ READ ONLY | READ WRITE ]

    [ ISOLATION LEVEL [ SERIALIZE | READ COMMITED ]

    [ USE ROLLBACK SEGMENT 'segment_name' ]

    [ NAME 'transaction_name' ];

    设置事务属性。

    --A账号中减去1000元
    UPDATE ACCOUNT 
      SET AMOUNT = AMOUNT -1000.00
    WHERE NAME = 'A';
    
    --B账号中加上1000元
    UPDATE ACCOUNT
      SET AMOUNT = AMOUNT + 1000.00
    WHERE NAME = 'B';
    COMMIT;
  • 相关阅读:
    [Xcode 实际操作]六、媒体与动画-(17)使用MediaPlayer框架播放视频
    [Xcode 实际操作]六、媒体与动画-(16)实现音乐的背景播放
    [Xcode 实际操作]六、媒体与动画-(15)使用AudioPlayer播放音乐
    [Xcode 实际操作]六、媒体与动画-(14)使用SystemSoundId播放简短声音
    [Xcode 实际操作]六、媒体与动画-(13)使用UIImageView制作帧动画
    [Swift]LeetCode148. 排序链表 | Sort List
    [Swift]LeetCode147. 对链表进行插入排序 | Insertion Sort List
    [Swift]LeetCode146. LRU缓存机制 | LRU Cache
    【POJ3615】Cow Hurdles 最短路,你若LCA,我仍不拦你。
    How MapReduce Works
  • 原文地址:https://www.cnblogs.com/markkang/p/12110071.html
Copyright © 2011-2022 走看看