![](/img/trans.png)
[英]Spring JDBC “IF NOT EXIST INSERT” Primary key constraint violation
[英]JDBC INSERT INTO - wrong primary key
当我从下面一切都执行代码的时候,但是我的主键应该设置为2,但是它跳到6,db看起来像id 1,next是6。我从这个db删除几行之前,我很确定这是问题。 它看起来像所有内容都已删除,但仍然存在。
con = DriverManager.getConnection("jdbc:mysql://localhost:3306/","root","");
stat = con.createStatement();
stat.executeUpdate("INSERT INTO money.state (bank,wallet) VALUES (200,400)");
请帮忙。
主键是自动递增的,如果您从表中删除行,则下一个条目将来自最后一个被删除的主键ID,而不是表中存在的最后一个主键。 这就是它的工作方式。
但是,如果您想填补空白( 不推荐使用 ),则必须手动进行如下更改:
ALTER TABLE [yourtablename] AUTO_INCREMENT = 1
因此,这将根据表中现有的最高现有值将auto_increment值重置为下一个。
预期的行为是为每个记录增加一个序列。 当您删除任何行
或截断表(对于Postgres)时,
这并不意味着该序列将从起始值开始,而只是从最后一个值开始继续,并按increment_by
因子increment_by
。
以这个顺序为例
Sequence "public.test_a_seq"
Column | Type | Value
---------------+---------+---------------------
sequence_name | name | test_a_seq
last_value | bigint | 7
start_value | bigint | 1
increment_by | bigint | 1
max_value | bigint | 9223372036854775807
min_value | bigint | 1
cache_value | bigint | 1
log_cnt | bigint | 26
is_cycled | boolean | f
is_called | boolean | t
现在,我删除行并在PRIMARY KEY
上添加具有默认值的两行
之后,last_value的系数将增加2。
last_value | bigint | 9
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.