《MySQL数据库技术及应用项目教程》教学PPT(共9单元)项目5 程序设计在学生成绩系统中的使用.pptVIP

  • 7
  • 0
  • 约3.16万字
  • 约 135页
  • 2022-03-29 发布于安徽
  • 举报

《MySQL数据库技术及应用项目教程》教学PPT(共9单元)项目5 程序设计在学生成绩系统中的使用.ppt

苏州经贸职业技术学院刘芳 * 知识点2:MySQL事务的管理 当与MySQL建立连接后,MySQL就将工作在自动提交事务模式下,直到用户通过修改系统变量@@autocommit的值关闭自动提交功能或使用START TRANSACTION语句开始一个显式事务。前者称为显式关闭自动提交模式,后者称为隐式关闭自动提交模式。隐式关闭自动提交模式不会修改系统变量@@autocommit的值。如要显式关闭自动提交模式,则可使用如下语句: SET @@autocommit=0; 1. 关闭MySQL的自动提交事务模式 苏州经贸职业技术学院刘芳 * 知识点2:MySQL事务的管理 在MySQL系统中,定义事务的语句主要有下列4条: START TRANSACTION、COMMIT、SAVEPOINT和ROLLBACK。 (1) 开始事务 在MySQL中,可以使用事务控制语句START TRANSACTION或者BEGIN WORK来显式地开始一个用户定义的事务。其语法格式如下。 START TRANSACTION | BEGIN WORK; 2. 用户事务的定义 苏州经贸职业技术学院刘芳 * (2)提交事务 COMMIT语句用于提交一个用户定义的事务,也标志一个事务的结束,并保证对数据的修改已经成功地写入数据库。其语法格式如下。 COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE]; (3)回滚事务(撤销事务) ROLLBACK语句用于回滚事务所做的修改,并结束当前事务,其语法格式如下。 ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE]; 2. 用户事务的定义 【任务实现】 (1)显式地关闭自动提交事务模式,并验证 首先显式地关闭自动提交事务模式:SET @@autocommit=0; 然后执行如下语句进行验证: USE studentscore; DELETE FROM bstudent WHERE stud_id=1011124101; SELECT * FROM bstudent WHERE stud_id=1011124101; 苏州经贸职业技术学院刘芳 * 说明:虽然上面语句的执行结果表明bstudent表中已经删去学号为“1011124101”的记录(显示为空记录)。但是,这个修改并没有持久化,因为自动提交功能已经关闭了。用户可以通过ROLLBACK语句撤销这一修改;或者使用COMMIT语句持久化这一修改。 【任务实现】 (2)通过开始一个事务隐式地关闭自动提交事务模式 -- 定义事务后执行回滚操作,并查看执行结果 START TRANSACTION; UPDATE bscore SET score = score *1.10 WHERE course_id = 10001; ROLLBACK; SELECT * FROM bscore WHERE course_id = 10001; 苏州经贸职业技术学院刘芳 * 说明:从执行结果可以看出,虽然已经执行了UPDATE语句,但并没有立即更新数据(回滚到了修改之前的状态),其他会话读取到的仍然是更新前的数据。 【任务实现】 (3)在客户端命令窗口输入并执行如下代码: /*事务开始的标识*/ START TRANSACTION; INSERT INTO bstudent(stud_id, stud_name, stud_sex, birth, family_place) VALUES(1012123103,王静静,女,1994-09-15,江苏); /*设置事务的第一个保存点*/ SAVEPOINT insertpoint1; INSERT INTO bstudent(stud_id, stud_name, stud_sex, birth, family_place) VALUES(3032133103,王正东,男,1995-11-04,山东); 苏州经贸职业技术学院刘芳 * 【任务实现】 /*设置事务的第二个保存点*/ SAVEPOINT insertpoint2; INSERT INTO bstudent(stud_id, stud_name, stud_sex, birth, family_place) VALUES(3032163102,李海,男,1998-10-15,山西); /*假如事务执行中第3条插入语句有错误,则回滚到保存点insertpoint2*/ ROLLBACK TO SAVEPOINT insertpoint2; SELECT * FROM bstudent WHERE stud_id=3032163102;

您可能关注的文档

文档评论(0)

1亿VIP精品文档

相关文档