如何添加第二个MYSQL增量

如何添加第二个MYSQL增量,mysql,mysqli,auto-increment,Mysql,Mysqli,Auto Increment,我有一张桌子: TABLE -------------------------------------- Unique ID | Increment ID | value | -------------------------------------- 如果“增量ID”值看到唯一ID已经有一个值,如何确保该值自动递增。比如说 Table -------------------------------------- Unique_ID | Increment_ID | value | ===

我有一张桌子:

TABLE
--------------------------------------
Unique ID | Increment ID | value | 
--------------------------------------
如果“增量ID”值看到唯一ID已经有一个值,如何确保该值自动递增。比如说

Table
--------------------------------------
Unique_ID | Increment_ID | value | 
=====================================
random1   | 1            | value1
random1   | 2            | value2
random2   | 1            | value3
random2   | 3            | value5
--------------------------------------
如果我发送一行:

INSERT INTO TABLE (Unique_ID,value) VALUES (random2,value6);
我想得到的是:

--------------------------------------
Unique_ID | Increment_ID | value  | 
=====================================
random1   | 1            | value1
random1   | 2            | value2 
random2   | 1            | value3 
random2   | 3            | value5 
random2   | 2            | value6 
--------------------------------------
MYSQL/phpmyadmin甚至可以做到这一点吗?还是应该用PHP实现?
提前感谢。

MySQL仅支持MyISAM表的按组自动递增功能

但这并不是使用MyISAM表的充分理由

要实现每个组的自动增量,插入需要以独占方式访问组中的行集,以确保它可以计算该组的下一个增量ID,而无需在其他并发会话插入同一组时创建竞争条件

这意味着您的事务需要针对并发插入锁定表

MyISAM在写入期间使用表锁定,因此它可以支持这种特殊的自动增量行为


但是像InnoDB这样的行级锁定存储引擎不支持它。它会阻碍并发插入,MySQL的许多功能都是为了帮助并发工作而设计的。

因此,这里有一种方法可以做到这一点:

MYSQL表必须采用MyISAM格式。要执行此操作(在phpmyadmin中),请转到表,然后转到“操作”选项卡。在“操作”中,将存储“存储引擎”更改为MyISAM。更多有关:

现在让它增加:

转到表“列”页面,并生成“唯一ID”和“增量ID”主键。然后将“增量ID”设置为“自动增量”。更多信息,请访问:


不确定这是否是最好的方法,但这肯定是一种方法。

除非在最新版本中发生了更改,否则如果使用MyISAM存储引擎,可以使用主键(Unique_ID,Increment_ID)来完成此操作;但是你会失去一些基本的功能,比如外键(我想还有触发器),你可以使用ON-BEFORE-INSERT和ON-BEFORE-UPDATE触发器。但是字符串键不是最好的选择。@Uuerdo,你可以在MyISAM中使用触发器,但是使用MyISAM意味着你会丢失事务、行级锁定、外键和所有四种ACID功能。@BillKarwin啊,是的,我记得除了外键之外还有其他东西,只是记不住细节。我真的不想费心去做这件事。只要存储一个人工智能——你可以随时计算这种序列,但这不值得。为了myisam放弃innodb