为了账号安全,请及时绑定邮箱和手机立即绑定

grade表和student表插入记录时,主键为什么都不是从1开始增加?

老师你好,在3.3小节中,在执行add()方法前对grade表和student表都做了清空操作,为什么执行后,表中的记录依然不是从1增加呢?

正在回答

2 回答

因为老师只是把这张表里面的数据删除,并没有删除重新创建这张表。

mysql有一个主键自增的属性,但是不同的数据库引擎对此实现的方式不同。但相同的是,假如你插入了3条数据,id自增到3,这时候你把数据全部删除,表仍然保留,那么下次插入,自增值是4.  在某些引擎下,你可以修改自增值的下一次初始值,但是不能用以前用过的值。就是说,以前自增到3了,你必须设置比3大的自增初始值,比如15,那么下一次插入,他将id=15而不是4了。

下面是不同的存储引擎的区别:

1.MyISAM

删除最大编号的记录后,该编号不可重用,可设定和修改初始值。

可使用复合索引在同一个数据表里创建多个相互独立的自增序列。了解:复合索引。

2.InnDB

不可重用编号,不可设置和修改初始值。

不支持在一个数据表里使用复合索引来生成多个互不干扰的序列编号。


1 回复 有任何疑惑可以回复我~
#1

qq_云在风中_0

修改的方法:ALTER TABLE student auto_increment = n
2016-06-01 回复 有任何疑惑可以回复我~

hibernate.hbm2ddl.auto的值的问题


create:表示启动的时候先drop,再create
create-drop: 也表示创建,只不过再系统关闭前执行一下drop
update: 这个操作启动的时候会去检查schema是否一致,如果不一致会做scheme更新
validate: 启动时验证现有schema与你配置的hibernate是否一致,如果不一致就抛出异常,并不做更新


0 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消
Hibernate初探之一对多映射
  • 参与学习       42171    人
  • 解答问题       295    个

Hibernate中一对多关联映射配置,以及cascade和inverse属性作用

进入课程

grade表和student表插入记录时,主键为什么都不是从1开始增加?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信