游客发表

MySQL 核心模块揭秘 | 插入记录,主键索引冲突加什么锁?

发帖时间:2025-11-05 16:03:22

1. 准备工作

创建测试表:复制CREATE TABLE `t1` ( `id` int unsigned NOT NULL AUTO_INCREMENT,心模 `i1` int DEFAULT 0, PRIMARY KEY (`id`) USING BTREE, KEY `idx_i1` (`i1`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb3;1.2.3.4.5.6.

插入测试数据:

MySQL 核心模块揭秘 | 插入记录,主键索引冲突加什么锁?

复制INSERT INTO `t1` (`id`, `i1`) VALUES (10, 101), (20, 201), (30, 301), (40, 401);1.2.

2. 加锁情况

t1 表中已经有一条 <id = 10> 的记录,我们执行以下 insert 语句,IT技术网块揭再插入一条 <id = 10> 的秘插记录。WordPress模板

复制begin; insert into t1(id,入记 i1) values (10, 1010);1.2.

因为新插入记录和表中原有记录存在主键冲突,执行 insert 语句之后,高防服务器录主报错如下:

复制(1062,键索 "Duplicate entry 10 for key t1.PRIMARY")1.

执行以下 select 语句查询加锁情况:

复制select engine_transaction_id, object_name, lock_type, lock_mode, lock_status, lock_data from performance_schema.data_locks where object_name = t1 and lock_type = RECORD\G

    热门排行

    友情链接