ThinkChat🤖让你学习和工作更高效,注册即送10W Token,即刻开启你的AI之旅 广告
* [ ] 功能 * 用于数据库的锁机制,如果在查询或者执行操作的时候使用,高并发下,确保数据正确操作 * 用法: InnoDB where 条件在表主键值明确,且主键值存在的情况下,为**行级锁** * 如果主键where条件的主键查询,**主键值不存在,则没有锁** * 如果 where查询条件中没有主键,那么为**表级锁** * **MyISAM 类型都是表级锁** * 用法一:行级锁 ~~~ // account 表引擎为 InnoDB // account 表主键为 uid $wehre = [ 'uid[in]' => [1, 2, ,3] ]; mysql\User::beg(); // 根据明确的主键值去查询,且主键值,1,2, 3 存在,此次查询为行级锁,只会锁定1,2,3这三行数据 $data = mysql\User::table('account')->lock( true )->where( $where )->select(); mysql\User::commit(); ~~~ * 用法二:没有锁 ~~~ // account 表引擎为 InnoDB // account 表主键为 uid $wehre = [ 'username[in]' => [999999999,9999999] ]; mysql\User::beg(); // 根据主键去查询,且主键值,99999,9999999记录不存在存在,此次查询为没有锁 $data = mysql\User::table('account')->lock( true )->where( $where )->select(); mysql\User::commit(); ~~~ * 用法三:表级锁 ~~~ // account 表引擎为 InnoDB // account 表主键为 uid $wehre = [ 'uid[like]' => 1, ]; mysql\User::beg(); // 根据主键值不明确的查询,则为表级锁 $data = mysql\User::table('account')->lock( true )->where( $where )->select(); mysql\User::commit(); ~~~