报错 插入更新_自增主键,三类插入测验答案,在这里。
drop table t1;
create table t1(
?? ?id int not null auto_increment,
?? ?name varchar(10) unique,
?? ?count int default 0,
?? ?primary key(id),
?? ?index(name)
)engine=innodb;
insert into t1(name) values("zhangsan"),("lisi"),("wangwu");
select * from t1;
答案:B
自增鍵從1開始,該測驗對應《三類插入與自增鍵的關系》中的簡單插入(simple insert)。簡單插入,能夠提前知道被插入的行數(shù),在處理自增鍵時,是最容易的。
實驗二、批量插入測驗
drop table t1,t2;
create table t1(
?? ?id int not null auto_increment,
?? ?name varchar(10) unique,
?? ?count int default 0,
?? ?primary key(id),
?? ?index(name)
)engine=innodb;
create table t2(
?? ?name varchar(10) unique
)engine=innodb;
insert into t2(name) values("x"),("y"),("z");insert into t1(name) select name from t2;
select * from t1;
插入成功,該測驗對應《三類插入與自增鍵的關系》中的批量插入(bulk insert)。批量插入,不能提前知道被插入的行數(shù),在處理自增鍵時,每插入一行,才會賦值新的自增值,在批量插入事務并發(fā)時,“可能”出現(xiàn)同一個事務的自增鍵不連續(xù)。
畫外音:可以有優(yōu)化機制,未來撰文。
實驗三、混合插入測驗drop table t1;
create table t1(
?? ?id int not null auto_increment,
?? ?name varchar(10) unique,
?? ?count int default 0,
?? ?primary key(id),
?? ?index(name)
)engine=innodb;
insert into t1(id, name) values(1, "shenjian");
insert into t1(id, name) values (111, "111"),(NULL, "abc"),(222, "222"),(NULL,"xyz");
select * from t1;請問,最后一個insert語句,執(zhí)行結束后id分別是:A 1,2,3,111,222B 1,111,112,222,223C 插入失敗,自增鍵報錯D 以上都不對答案:B
插入成功,自增鍵每次從最大值后面開始新增,該測驗對應《三類插入與自增鍵的關系》中的混合插入(mixed-mode insert)。有些行插入時指定了自增鍵,無需數(shù)據(jù)庫生成;有些行插入時未指定自增鍵(NULL),需要數(shù)據(jù)庫生成。
實驗四、insert ... on duplicate key測驗接著實驗三,繼續(xù)執(zhí)行以下語句:insert into t1(name)values("shenjian"),("aaa"),("bbb")
on duplicate key update count=100;
select * from t1;
請問,最后一個insert語句,執(zhí)行結束后id分別是:A 1,2,3,111,222,223,224,225B 1,111,112,222,223,224,225,226C 1,111,112,222,223,224,225D 1,111,112,222,223,225,226E 以上都不對答案:D該測驗也對應《三類插入與自增鍵的關系》中的混合插入(mixed-mode insert)。有些行插入實際上是修改,無需數(shù)據(jù)庫生成自增鍵;有些行插入實際上就是插入,需要數(shù)據(jù)庫生成自增鍵。
insert … on duplicate key update … 這種情況是最最復雜的,它可能導致,系統(tǒng)生成的自增值,在更新階段用不上。畫外音,官網(wǎng)原文是:an INSERT followed by a UPDATE, where the allocated value for the AUTO_INCREMENT column may or may not be used during the update phase.
伸手黨們,這下滿足了吧?都答對了么。畫外音:MySQL版本為MySQL5.6。知其然,知其所以然。架構師之路-分享技術思路相關文章:
《緩沖池(buffer pool),這次徹底懂了!》
《寫緩沖(change buffer),這次徹底懂了!》
作業(yè)題:insert into t1(name)values("zhangsan"),("lisi"),("wangwu");這類簡單插入,當有并發(fā)事務執(zhí)行時,自增鍵仍能保證連續(xù)性,是如何做到的?A:行粒度加鎖,實施互斥B:表粒度加鎖,實施互斥C:全局自增鍵單例,實施互斥D:SQL語句粒度加鎖,實施互斥E:事務粒度加鎖,實施互斥總結
以上是生活随笔為你收集整理的报错 插入更新_自增主键,三类插入测验答案,在这里。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: iextensionunit类_Java
- 下一篇: 事务连接中断_HTTP长连接和短连接