如何添加第二个mysql增量

vfh0ocws  于 2021-06-21  发布在  Mysql
关注(0)|答案(2)|浏览(353)

我有一张table:

TABLE
--------------------------------------
Unique ID | Increment ID | value | 
--------------------------------------

如果“increment 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来实现?提前谢谢。

5us2dqdw

5us2dqdw1#

mysql只支持myisam表的按组自动递增特性。
但这并不是使用myisam表的充分理由。
要实现每个组的自动增量,insert需要以独占方式访问组中的行集,以确保它可以计算该组的下一个增量id,而无需创建与其他并发会话插入同一组的竞争条件。
这意味着您的事务需要针对并发插入锁定表。
myisam在写入过程中使用表锁定,因此它可以支持这种特殊的自动增量行为。
但是像innodb这样的行级锁定存储引擎不支持它。它会阻碍并发插入,mysql的许多特性都是为了帮助并发工作而设计的。

slhcrj9b

slhcrj9b2#

所以这里有一个方法:
mysql表必须是myisam格式。要执行此操作(在phpmyadmin中),请转到表,然后转到“操作”选项卡。在“操作”中,将存储“存储引擎”更改为myisam。更多信息:http://richardcummings.info/convert-myisam-to-innodb-using-phpmyadmin/
现在让它增加:
转到表“column”页,并设置“unique\u id”和“increment\u id”主键。然后将“increment\u id”设置为“auto\u increment”。更多信息请访问:https://dev.mysql.com/doc/refman/8.0/en/example-auto-increment.html
不确定这是不是最好的方法,但它肯定是一种方法。

相关问题