mysql记录不存在加锁吗
针对Mysql数据库,进行数据处理中添加或删除记录时需要加锁,以保证数据的一致性和完整性。当然,有些数据库的设计能够自动检测并解决并发问题,Mysql并不是其中之一。如果在数据处理时不存在该记录,那么是否需要加锁呢?下面我们来看具体情况。
对于单记录的操作,如果该记录不存在,则不需要加锁。比如说,以下的伪代码: BEGIN; SELECT * FROM `table` WHERE `id`=FOR UPDATE; IFNOT FOUND THEN ROLLBACK; END IF; ... COMMIT; 当查询的记录不存在时,自然无需对记录进行加锁,因为不存在的记录无需检测并发。 对于一组记录的操作,如果要实现查询并更新操作需要加上排他锁,这样才能保证其它并发操作不能修改已经查询出的数据。不加锁的话,虽然不存在的记录不会被加锁,但是查询会引起数据的变动,因此需要加锁以保护该区块。 例如: BEGIN; SELECT * FROM `table` WHERE `field`=FOR UPDATE; ... UPDATE `table` SET `field`=WHERE `field`=; COMMIT;