文章详情

短信预约信息系统项目管理师 报名、考试、查分时间动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

三大常用关系型数据库事务详解之二:基本事务命令

2020-08-07 15:45

关注

三大常用关系型数据库事务详解之二:基本事务命令

二、事务基本命令介绍

说明:命令中,

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

 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语句的执行,不需要特别指定事务的开始和结束,一个事务结束就意味着下一事务开始。事务终止于下列四种情况:

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;
阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     801人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     348人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     311人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     432人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     220人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-数据库
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯