单元9 数据库管理解析.ppt

  1. 1、本文档共35页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
事务 在MySQL环境中,事务由作为一个单独单元的一个或多个SQL语句组成。这个单元中的每个SQL语句是互相依赖的,而且单元作为一个整体是不可分割的。如果单元中的一个语句不能完成,整个单元就会回滚(撤销),所有影响到的数据将返回到事务开始以前的状态。因而,只有事务中的所有语句都成功地执行才能说这个事务被成功地执行。 向公司添加一名新的雇员事务: (1)在雇员数据库中为雇员创建一条记录; (2)为雇员分配部门; (3)建立雇员的工资记录。 如果这三步中的任何一步失败,如为新成员分配的雇员ID已经被其他人使用或者输入到工资系统中的值太大,系统就必须撤销在失败之前所有的变化,删除所有不完整记录的踪迹,避免以后的不一致和计算失误。 前面的三项任务构成了一个事务。任何一个任务的失败都会导致整个事务被撤销,系统返回到以前的状态 事务处理 首先,用户必须关闭自动提交,事务才能由多条SQL语句组成,使用如下语句: SET @@AUTOCOMMIT=0; (1) 开始事务 当一个应用程序的第一条SQL语句或者在COMMIT或ROLLBACK语句(后面介绍)后的第一条SQL执行后,一个新的事务也就开始了。另外还可以使用一条START TRANSACTION语句来显示地启动一个事务。 语法格式: START TRANSACTION | BEGIN WORK (2)结束事务 COMMIT语句是提交语句,它使得自从事务开始以来所执行的所有数据修改成为数据库的永久部分,也标志一个事务的结束,其语法格式为: COMMIT [WORK] [AND [NO] CHAIN] [[NO] RELEASE] 说明: 可选的AND CHAIN子句会在当前事务结束时,立刻启动一个新事务,并且新事务与刚结束的事务有相同的隔离等级。RELEASE子句在终止了当前事务后,会让服务器断开与当前客户端的连接。包含NO关键词可以抑制CHAIN或RELEASE完成。 事务处理 (3)撤消事务 ROLLBACK语句是撤销语句,它撤销事务所做的修改,并结束当前事务。 语法格式: ROLLBACK [WORK] [AND [NO] CHAIN] [[NO] RELEASE] (4)回滚事务 除了撤销整个事务,用户还可以使用ROLLBACK TO语句使事务回滚到某个点,在这之前需要使用SAVEPOINT语句来设置一个保存点。 SAVEPOINT语法格式为: SAVEPOINT identifier 其中,identifier为保存点的名称。 ROLLBACK TO SAVEPOINT语句会向已命名的保存点回滚一个事务。如果在保存点被设置后,当前事务对数据进行了更改,则这些更改会在回滚中被撤销。 语法格式为: ROLLBACK [WORK] TO SAVEPOINT identifier 事务的处理过程 下面几个语句说明了有关事务的处理过程: 1. START TRANSACTION 2. UPDATE … 3. DELETE… 4. SAVEPOINT S1; 5. DELETE… 6. ROLLBACK WORK TO SAVEPOINT S1; 7. INSERT… 8. COMMIT WORK; 说明:在以上语句中,第一行语句开始了一个事务;第2、3行语句对数据进行了修改,但没有提交;第4行设置了一个保存点;第5行删除了数据,但没有提交;第6行将事务回滚到保存点S1,这时第5行所做修改被撤销了;第7行修改了数据;第8行结束了这个事务,这时第2、3、7行对数据库做的修改被持久化。 锁定 MySQL提供了LOCK TABLES语句来锁定当前线程的表,语法格式如下: LOCK TABLES tbl_name [AS alias] {READ [LOCAL] | [LOW_PRIORITY] WRITE} 说明:表锁定支持以下类型的锁定。 ● READ:读锁定,确保用户可以读取表,但是不能修改表。加上LOCAL后允许在表锁定后用户可以进行非冲突的INSERT语句,只适用于MyISAM类型的表。 ● WRITE:写锁定,只有锁定该表的用户可以修改表,其他用户无法访问该表。加上LOW_PRIORITY后允许其他用户读取表,但是不能修改它。 当用户在一次查询中多次使用到一个锁定了的表,需要在锁定表的时候用AS子句为表定义一个别名,alias表示表的别名。 表锁定只用于防止其他客户端进行不正当地读取和写入。保持锁定(即使是读取锁定)的客户端可以进行表层级的操作,如DROP TABLE。 在对一

文档评论(0)

33ggoup + 关注
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档