mysql - 如何添加第二个 MySQL 增量
问题描述
我有一张桌子:
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甚至可以做到这一点吗?还是应该在 PHP 中完成?
解决方案
MySQL 仅对 MyISAM 表支持每组自动增量功能。
但这并不是使用 MyISAM 表的充分理由。
要实现每组自动增量,INSERT 需要独占访问组中的行集,以确保它可以计算该组的下一个增量 ID,而不会与其他并发会话插入到同一组。
这意味着您的事务需要针对并发插入锁定表。
无论如何,MyISAM 在写入期间使用表锁定,因此它可以支持这种特殊的自动增量行为。
但是像 InnoDB 这样的行级锁定存储引擎不支持它。它会阻碍并发插入,并且 MySQL 的许多功能旨在帮助并发工作。
推荐阅读
- postgresql - 如何在 PostgreSQL 中使用任意键提取 JSON 的值?
- output - 了解 Elixir 输出
- search - Azure 搜索中的通配符搜索 startwith 无法正常工作
- angular - 升级到 Angular 9 后在类型文件中找不到变量
- c# - C#如何标记图像数据集
- typescript - name.replace 不是具有动态列的 mat 表中的函数
- cordova - ionic 4 cordova 相机获取带有照片库的 fileURI
- android - Android定期位置locationRequest.interval不起作用
- python-3.x - 是否可以根据计算属性使 Attrs 类具有可比性?
- python - BeautifulSoup4 循环找不到后续元素