mysql如果主键重复了会发生什么情况

首先创建一个person表:

 

create TABLE `person`(
	`id` int not null auto_increment,
	`name` VARCHAR(255) ,
	`age` int,
	PRIMARY key (`id`)
)

  

 

同时打开两个sql窗口

 

set autocommit=off;

set @id=-1;

SELECT
	auto_increment into @id
FROM
	information_schema.`TABLES`
WHERE
	table_name = 'person'
AND TABLE_SCHEMA = 'test';   -- 第1步运行到这里

INSERT into person(id,name,age) VALUES(@id,'lisi',28);   -- 第3步运行这里

COMMIT;  -- 第5步运行这里(第二种,第4步先运行这里)

  

set autocommit=off;

set @id:=-1;

SELECT
	auto_increment into @id
FROM
	information_schema.`TABLES`
WHERE
	table_name = 'person'
AND TABLE_SCHEMA = 'test';     -- 第2步运行到这里

INSERT into person(id,name,age) VALUES(@id,'wangwu',28);   -- 第4步运行这里(第二种,第5步运行这里)

COMMIT;  -- 第6步运行这里 

  

第一种,运行到第4步的时候,报错了:

[SQL] INSERT into person(id,name,age) VALUES(@id,'wangwu',28);
[Err] 1205 - Lock wait timeout exceeded; try restarting transaction

 

第二种,运行到第5步的时候

[SQL] INSERT into person(id,name,age) VALUES(@id,'wangwu',28);
[Err] 1062 - Duplicate entry '9' for key 'PRIMARY'

 

 

  

posted on 2020-12-21 22:40  坚守梦想  阅读(2471)  评论(0编辑  收藏  举报