session 1:
mysql> begin;
query ok, 0 rows affected (0.00 sec)
mysql> update a set name=(select name from bai where a.id=bai.id) where id=1;
query ok, 0 rows affected (0.00 sec)
rows matched: 1 changed: 0 warnings: 0
session 2:
mysql> use test;
database changed
mysql> update bai set name='ee' where id=10000;
error 1205 (hy000): lock wait timeout exceeded; try restarting transaction
mysql>
預設的隔離級別是rr,如果session1 單獨select是不會阻塞2的,select的會使用快照,update使用當前讀,所以在子查詢中的select為了防止幻讀,就直接不讓表有dml了。 mysql 查詢鎖 MySQL 鎖查詢
一 從檢視檢視 檢視程序 show processlist 檢視是否鎖表 show open tables where in use 0 1 檢視當前的事務 select from information schema.innodb trx 2 檢視當前鎖定的事務 select from infor...
mysql求和 子查詢 MySQL子查詢
到現在為止,我們已經表明,以select宣告是乙個簡單的查詢。該單個語句從單個資料庫表中檢索資料。sql還同意建立乙個子查詢。即巢狀在其他查詢的查詢。下列實施例給出巢狀查詢。一種表示訂單資訊儲存,包含訂單號,客戶id。訂購日期。例如以下所看到的 一張表示儲存訂單物品資訊,例如以下 另一張表儲存的是客...
MySQL鎖型別以及子查詢鎖表問題 解鎖
mysql中select for update鎖表的範圍 mysql中select for update鎖表的問題 由於innodb預設是row level lock,所以只有 明確 的指定主鍵,mysql才會執行row lock 只鎖住被選取的資料例 否則mysql將會執行table lock 將...