实际插入的是
(6, '222')
故,实验结果,最终的三行记录是:
5,000
1,111
6,222
你答对了吗?
为了巩固下上面的知识点,咱们一起来复习一下:
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");
请问,执行结束后id分别是多少呢?
答案:
(1, 'shenjian')
(111, '111') // 允许指定值
(112, 'abc') // 忽略NULL,从最大值开始增
(222, '222') // 允许指定值
(223, 'xyz') // 忽略NULL,从最大值开始增
上题如果继续执行以下语句:
insert into t1(name)values("shenjian"),("aaa"),("bbb")
on duplicate key update count=100;
请问:
(1)会不会执行报错?
(2)如果报错,为什么呢?
(3)如果不报错,得到的数据是什么呢?
回答正确,并解释清楚原因,可以送书哟。
知其然,更知其底层所以然。