命令行窗口一:
-- 设置事务不自动提交
set autocommit=0;
-- 查询并锁定id='default' 的记录
select * from am_domain where id='default' for update;
命令行窗口二:
执行
select * from am_domain where id='default' for update;
或
update am_domain set ... where id='default';
或
delete from am_domain where id='domain';
都会卡主,等待锁释放,只有“命令行窗口一”commit提交事务后,“命令行窗口二”中的SQL语句才能继续。
说明:
命令行窗口一锁定指定记录时,
窗口二中,普通不包含for update的select语句是能正常执行的。
窗口二中,不涉及锁定记录(id !='default')的更新SQL也是可以执行。