日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

报错 插入更新_自增主键,三类插入测验答案,在这里。

發(fā)布時間:2024/10/8 编程问答 39 豆豆
生活随笔 收集整理的這篇文章主要介紹了 报错 插入更新_自增主键,三类插入测验答案,在这里。 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
《三類插入與自增鍵的關(guān)系》一文,基本解答了《自增鍵四道測驗(yàn)題》,仍有水友要求貼答案,原理都解釋了,copy語句執(zhí)行下,真的難么?畫外音:你們贏了,我還是貼一下執(zhí)行結(jié)果。實(shí)驗(yàn)一、自增鍵初始值測驗(yàn)

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;

請問,被插入的三條記錄,id分別為:A 0,1,2B 1,2,3C 以上都不對

答案:B

自增鍵從1開始,該測驗(yàn)對應(yīng)《三類插入與自增鍵的關(guān)系》中的簡單插入(simple insert)。簡單插入,能夠提前知道被插入的行數(shù),在處理自增鍵時,是最容易的。


實(shí)驗(yàn)二、批量插入測驗(yàn)

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;

請問,上述insert...select...的執(zhí)行結(jié)果是:A 插入成功B 插入失敗,自增鍵報錯C 以上都不對

答案:A

插入成功,該測驗(yàn)對應(yīng)《三類插入與自增鍵的關(guān)系》中的批量插入(bulk insert)。批量插入,不能提前知道被插入的行數(shù),在處理自增鍵時,每插入一行,才會賦值新的自增值,在批量插入事務(wù)并發(fā)時,“可能”出現(xiàn)同一個事務(wù)的自增鍵不連續(xù)。

畫外音:可以有優(yōu)化機(jī)制,未來撰文。


實(shí)驗(yàn)三、混合插入測驗(yàn)
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í)行結(jié)束后id分別是:A 1,2,3,111,222B 1,111,112,222,223C 插入失敗,自增鍵報錯D 以上都不對

答案:B

插入成功,自增鍵每次從最大值后面開始新增,該測驗(yàn)對應(yīng)《三類插入與自增鍵的關(guān)系》中的混合插入(mixed-mode insert)。有些行插入時指定了自增鍵,無需數(shù)據(jù)庫生成;有些行插入時未指定自增鍵(NULL),需要數(shù)據(jù)庫生成。

實(shí)驗(yàn)四、insert ... on duplicate key測驗(yàn)接著實(shí)驗(yàn)三,繼續(xù)執(zhí)行以下語句:

insert into t1(name)values("shenjian"),("aaa"),("bbb")

on duplicate key update count=100;

select * from t1;

請問,最后一個insert語句,執(zhí)行結(jié)束后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

該測驗(yàn)也對應(yīng)《三類插入與自增鍵的關(guān)系》中的混合插入(mixed-mode insert)。有些行插入實(shí)際上是修改,無需數(shù)據(jù)庫生成自增鍵;有些行插入實(shí)際上就是插入,需要數(shù)據(jù)庫生成自增鍵。

insert … on duplicate key update … 這種情況是最最復(fù)雜的,它可能導(dǎo)致,系統(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。知其然,知其所以然。架構(gòu)師之路-分享技術(shù)思路

相關(guān)文章

《緩沖池(buffer pool),這次徹底懂了!》

《寫緩沖(change buffer),這次徹底懂了!》

作業(yè)題:insert into t1(name)values("zhangsan"),("lisi"),("wangwu");這類簡單插入,當(dāng)有并發(fā)事務(wù)執(zhí)行時,自增鍵仍能保證連續(xù)性,是如何做到的?A:行粒度加鎖,實(shí)施互斥B:表粒度加鎖,實(shí)施互斥C:全局自增鍵單例,實(shí)施互斥D:SQL語句粒度加鎖,實(shí)施互斥E:事務(wù)粒度加鎖,實(shí)施互斥

總結(jié)

以上是生活随笔為你收集整理的报错 插入更新_自增主键,三类插入测验答案,在这里。的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。