Mysql笔记
1. for update悲观锁
Mysql中使用Select ... for update操作,会锁表或者锁行,当查询条件中有明确指定主键的时候会锁行,否则会锁表(有主键但不明确的情况下任然是锁表),这种锁只有在所属事务提交后才会释放。
注意:
1.FOR UPDATE仅适用于InnoDB,且必须在事务处理模块(BEGIN/COMMIT)中才能生效
2.Myisam 只支持表级锁,InnerDB支持行级锁 添加了(行级锁/表级锁)锁的数据不能被其它事务再锁定,也不被其它事务修改。是表级锁时,不管是否查询到记录,都会锁定表。
2. 查找数据是否存在
SELECT 1 FROM table WHERE a = 1 AND b = 2 LIMIT 1
Integer exist = xxDao.existXxxxByXxx(params);
if ( exist != NULL ) {
//当存在时,执行这里的代码
} else {
//当不存在时,执行这里的代码
}