mysql子查詢鎖

2021-08-31 20:47:40 字數 612 閱讀 8800

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 將...