如何添加第二个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