解析1:默认事务中从始至终只有一个锁闭合操作,即LOCK TABLES tab;#LOCK#在此中间的 所有SQL语句都不会加锁和解锁,需要手动加锁的话见例1(READ-UNCOMMITTED操作)#UNLOCKUNLOCK TABLES;例1(READ-UNCOMMITTED操作)#会话aSTART TRANSACTION;#开始事务1selectsleep(10)fromfeedbackwhereid<5;#这里会默认加上隐式读锁。 这时我在事务2中 加了写锁,看下是否会等待。(如果不加写锁可能会出现脏读等怪像;也就是说事务2不加写锁的话可以直接进行写操作,出现脏读,那就证明一个事务中 从始至终只有一个锁闭合操作,即解释1的说法)selecttitlefromfeedbackwhereid=1;COMMIT;#提交事务#会话bSTART TRANSACTION;#开始事务2LOCK TABLES feedback WRITE;#加上写锁定, 这时会写锁等待吗?的确被锁住了,我要等待事务1解锁后,我才可以加写锁。以保证事务1能正确地读到我的更新信息,对于并发时候用这个隔离级别的话适合手动加锁来更新消息。update feedbacksettitle='609-1709'whereid=3;#写锁权,执行写操作UNLOCK TABLES;#解除写锁(注意:当当前所有的表均被锁定时,UNLOCK TABLES可以提交事务,我们不想UNLOCK TABLES提交事务,怎么办?)COMMIT;#提交事务