报错 插入更新-凯发k8官方网
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)。简单插入,能够提前知道被插入的行数,在处理自增键时,是最容易的。
实验二、批量插入测验
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)。批量插入,不能提前知道被插入的行数,在处理自增键时,每插入一行,才会赋值新的自增值,在批量插入事务并发时,“可能”出现同一个事务的自增键不连续。
画外音:可以有优化机制,未来撰文。
实验三、混合插入测验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语句,执行结束后id分别是:a 1,2,3,111,222b 1,111,112,222,223c 插入失败,自增键报错d 以上都不对答案:b
插入成功,自增键每次从最大值后面开始新增,该测验对应《三类插入与自增键的关系》中的混合插入(mixed-mode insert)。有些行插入时指定了自增键,无需数据库生成;有些行插入时未指定自增键(null),需要数据库生成。
实验四、insert ... on duplicate key测验接着实验三,继续执行以下语句:insert into t1(name)values("shenjian"),("aaa"),("bbb")
on duplicate key update count=100;
select * from t1;
请问,最后一个insert语句,执行结束后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)。有些行插入实际上是修改,无需数据库生成自增键;有些行插入实际上就是插入,需要数据库生成自增键。
insert … on duplicate key update … 这种情况是最最复杂的,它可能导致,系统生成的自增值,在更新阶段用不上。画外音,凯发k8官方网官网原文是: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),这次彻底懂了!》
作业题:insert into t1(name)values("zhangsan"),("lisi"),("wangwu");这类简单插入,当有并发事务执行时,自增键仍能保证连续性,是如何做到的?a:行粒度加锁,实施互斥b:表粒度加锁,实施互斥c:全局自增键单例,实施互斥d:sql语句粒度加锁,实施互斥e:事务粒度加锁,实施互斥总结
以上是凯发k8官方网为你收集整理的报错 插入更新_自增主键,三类插入测验答案,在这里。的全部内容,希望文章能够帮你解决所遇到的问题。
- 上一篇: iextensionunit类_java
- 下一篇: 事务连接中断_http长连接和短连接