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'

 

 

  


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM