结论:
select .......for update除了有查询的作用外,还会加锁呢,而且它是悲观锁
如果查询条件用了索引/主键,那么select ..... for update就会进行行锁。
如果是普通字段(没有索引/主键),那么select ..... for update就会进行锁表。
CREATE TABLE `user` (
`id` INT ( 11 ) NOT NULL AUTO_INCREMENT,
`name` VARCHAR ( 255 ) DEFAULT NULL,
`age` INT ( 11 ) DEFAULT NULL,
`code` VARCHAR ( 255 ) DEFAULT NULL,
PRIMARY KEY ( `id` ),
KEY `idx_age` ( `age` ) USING BTREE
) ENGINE = INNODB AUTO_INCREMENT = 1570068 DEFAULT CHARSET = utf8
INSERT INTO `user` VALUES (1,'张三',25,'2600')
//设置为手动提交。0代表手动提交,1代表自动提交
set @@autocommit=0;
select @@autocommit;
select * from user where id =1 for update;
另一客户端:堵塞
修改ID2
证明锁行数据