Tag: 自动增量

在MySQL中严格自动递增值

我必须使用严格的顺序ID为表(行)中的每个元素创建一个MySQL InnoDB表。 ID中不能有任何间隙 – 每个元素必须具有不同的ID,并且必须按顺序分配。 并发用户在此表上创建数据。 我遇到了MySQL“自动增量”行为,如果事务失败,则不使用PK号,留下间隙。 我已经阅读了在线复杂的解决方案,这些解决方案并没有说服我和其他一些没有真正解决我的问题( 在MySQL / InnoDB中模拟自动增量, 在同步的mysql服务器上设置手动增量值 ) 我想最大限度地提高并发性。 我不能让用户在桌面上写字并等待很长时间。 我可能需要对表进行分片…但仍然保持ID计数。 表中元素的顺序并不重要,但ID必须是顺序的(即,如果在另一个元素之前创建元素不需要具有较低的ID,则不允许在ID之间存在间隙)。 我能想到的唯一解决方案是使用额外的COUNTER表来保持计数。 然后用空的“ID”(不是PK)在表中创建元素,然后锁定COUNTER表,获取数字,将其写在元素上,增加数字,解锁表。 我认为这样可以正常工作,但有一个明显的瓶颈:在锁定期间,没有人能够写任何ID。 此外,如果持有表的节点不可用,则是单点故障。 我可以创建一个“主人”吗? 复制但我不确定这种方式我是否冒冒险使用过时的ID计数器(我从未使用过复制)。 谢谢。

谁负责MySQL和Hibernate之间主键的自动增量?

MySQL的 CREATE TABLE `role` ( `id_role` INT(11) unsigned NOT NULL AUTO_INCREMENT, PRIMARY KEY (`id_role`) ) AUTO_INCREMENT=1; 过冬 @Entity public class Role { private Integer idRole; @Column(name = “id_role”, precision = 10) @GeneratedValue @Id public Integer getIdRole() { return idRole; } public void setIdRole(Integer idRole) { this.idRole = idRole; } } 鉴于上述背景,谁在创建新role时负责id_role列的自动增量? 换句话说,Hibernate在运行create SQL语句之前是否设置了主键值,还是将其设置为null并让MySQL在获取所选主键时自动递增该字段?

为每个INSERT增加表ID的值

我正在使用PostgreSQL设置所有表格。 我目前有一个名为comments的表,其中一个名为comment_id的主键是一个长度为4的VARCHAR 。 我有一个表单设置插入一个新的注释到数据库但我很困惑,我将如何从我之前的值获取我的Java servlet ++的comment_id。 例如0001到0002。