视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
MySQL不支持的功能_MySQL
2020-11-09 17:42:03 责编:小采
文档

3.9 MySQL不支持的功能

本节介绍其他数据库中有而MySQL中无的功能。它介绍省略了什么功能,以及在需要这些功能时怎么办。一般情况下, MySQL之所以忽略某些功能是因为它们有负面性能影响。有的功能正在开发者的计划清单上,一旦找到一种方法可以实现相应的功能而又不致于影响良好性能的目标,就会对它们进行实现。

■ 子选择。子选择是嵌套在另一个SELECT 语句内的SELECT 语句,如下面的查询所示:

SELECT * FROM score

WHERE event_id IN (SELECT event_id FROM event WHERE type = "T")

子选择打算在MySQL3.24 中给出,到那时它们就不会忽略了。但到那时,许多用子选择撰写的查询也可以用连接来编写。请参阅3 . 8 . 1节“将子选择编写为连接”。

■ 事务处理和提交/回退。事务处理是由其他客户机作为一个整体不中断执行的一组SQL语句。提交/回退功能允许规定数条语句作为一个整体执行或不执行。即,如果事务处理中的任何一条语句失败,那么直到该语句前执行的所有语句的作用都被撤消。
ySQL 自动进行单一SQL 语句的同步以免客户机互相干扰。(例如,两个客户机不能对相同的表进行同时写入。)此外,可利用LOCK TABLES 和UNLOCK TABLES将数条语句组成一个整体,这使您能够完成单条语句的并发控制所不能满足的操作。MySQL与事务处理有关的问题是,它不能自动对数条语句进行组织,而且如果这些语句中有某一条失败后也不能对它们进行回退。

为了弄清事务处理为什么有用,可举例说明。假如您在服装销售业工作,无论何时,只要您的销售人员进行了一次销售,都要更新库存数目。下面的例子说明了在多个销售人员同时更新数据库时可能出现的问题(假如初始的衬衫库存数目为4 7):

t1销售人员1卖出3件衬衫

t2 销售人员检索当前衬衫计数( 4 7):

SELECT quantity FROM inventory WHERE item = "shirt"

t3 销售人员2卖出2件衬衫

t4 销售人员2检索当前衬衫计数( 4 7)

SELECT quantity FROM inventory WHERE item = "shirt"

t5 销售人员1计算库存的新数目为47 - 3 = 44 并设置衬衫计数为44:

UPDATE inventory SET quantity = 44 WHERE item = "shirt"

t6 销售人员2计算库存的新数目为47 - 2 = 45 并设置衬衫计数为45:

UPDATE inventory SET quantity = 45 WHERE item = "shirt"

在这个事件序列结束时,您已经卖掉了5 件衬衫,但库存数目却是45 而不是4 2。问题是如果在一条语句中查看库存而在另一条语句中更新其值,这是一个多语句的事务处理。第二条语句中所进行的活动取决于第一条语句中检索出的值。但是如果在重叠的时间范围内出现的事务处理,则每个事务处理的语句会纠缠在一起,并且互相干扰。在事务处理型的数据库中,每个销售人员的语句可作为一个事务处理执行,这样,销售人员2 的语句在销售人员1的语句完成之前不会被执行。在MySQL中,可用两种方法达到这个目的:

下载本文
显示全文
专题