mysql 的innodb实现了行锁,myisam是表锁。 对于读操作,加共享锁,对于其他操作,加排他锁。当你正在编辑某条记录的时候,另外一个编辑的请求过来,会因为排他锁而处于等待的状态,这时候上层程序报错,你做个错误陷阱捕获到这个错误,然后提示给用户。
这个不一定是错误。 除了楼上的说法,在多用户并发编辑的情况下,我主张采用乐观行级锁的做法。 只锁定符合条件的记录行。甚至是可能不存在的行。 update A set col1 = ? and col2 = ? and col3 = ? where id = ? and col1 = <old_col1> and col2 = <old_col2> and col3 = <old_col3>
MySQL官方文档 http://dev.mysql.com/doc/refman/5.1/zh/index.html
对于读操作,加共享锁,对于其他操作,加排他锁。当你正在编辑某条记录的时候,另外一个编辑的请求过来,会因为排他锁而处于等待的状态,这时候上层程序报错,你做个错误陷阱捕获到这个错误,然后提示给用户。
除了楼上的说法,在多用户并发编辑的情况下,我主张采用乐观行级锁的做法。
只锁定符合条件的记录行。甚至是可能不存在的行。
update A set col1 = ? and col2 = ? and col3 = ? where id = ? and col1 = <old_col1> and col2 = <old_col2> and col3 = <old_col3>