程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> MySQL綜合教程 >> 數據庫事務處理之排他鎖

數據庫事務處理之排他鎖

編輯:MySQL綜合教程

數據庫事務處理之排他鎖   排他鎖  www.2cto.com   下面做作一個實驗,驗證鎖的效果 終端一,首先進入事務狀態然後運行下面語句   mysql> begin; Query OK, 0 rows affected (0.00 sec)   mysql> select * from t1 where id='3' for update; +----+--------+---------------------+---------------------+ | id | name   | ctime               | mtime               | +----+--------+---------------------+---------------------+ |  3 | test   | 0000-00-00 00:00:00 | 2013-01-14 13:05:41 | +----+--------+---------------------+---------------------+ 1 row in set (0.00 sec)   終端二, 查詢表中數據   mysql> select * from t1; +----+--------+---------------------+---------------------+ | id | name   | ctime               | mtime               | +----+--------+---------------------+---------------------+ |  1 | neo    | 0000-00-00 00:00:00 | 2013-01-14 13:00:00 | |  2 | zen    | 0000-00-00 00:00:00 | 2013-01-14 13:00:43 | |  3 | test   | 0000-00-00 00:00:00 | 2013-01-14 13:05:41 | +----+--------+---------------------+---------------------+ 3 rows in set (0.00 sec)   增加“for update”查詢非鎖定記錄  www.2cto.com     mysql> select * from t1 where id=2 for update; +----+------+---------------------+---------------------+ | id | name | ctime               | mtime               | +----+------+---------------------+---------------------+ |  2 | zen  | 0000-00-00 00:00:00 | 2013-01-14 13:00:43 | +----+------+---------------------+---------------------+ 1 row in set (0.00 sec)   查詢被鎖定記錄   mysql> select * from t1 where id=3 for update; ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction   查詢所有記錄,因為記錄中包含了id=3那條,所以也不允許查詢。   mysql> select * from t1 for update; ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction   測試修改記錄   mysql> UPDATE `t1` SET `name`='testaa' WHERE  `id`=3; ERROR 1205 (HY000): Lock wait timeout exceeded; try restarting transaction   提示 在沒有出現ERROR 1205 (HY000)的這段時間,只要終端一中執行commit,rollback.終端二中的語句就會運行。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved