Innodb 怎么实现 subId 自动增长并在 id 重置时也重置

342 天前
 monster1priest

目标数据库形式:
| id | subId |
| ---- | ---- |
| 1 | 1 |
| 1 | 2 |
| 1 | 3 |
| 2 | 1 |
| 2 | 2 |
| 2 | 3 |
| 1 | 4 |

插入数据时,id 相同,subId 会自动增长。

MyIsAM 引擎可以设置联合主键,把 subId 设置为自动增长。
新项目写操作比较多,想用 InnoDB ,用不用联合主键没关系,只要能做到上面的形式就可以。

892 次点击
所在节点    MySQL
2 条回复
iosyyy
342 天前
chatgpt

在 InnoDB 引擎下,你可以通过使用自增主键和外键来实现类似的目标数据库形式,尽管不能直接设置联合主键并让 subId 自动增长。以下是一种可能的方式来实现该结构:

创建主表( id 主键自增):
sql
Copy code
CREATE TABLE main_table (
id INT AUTO_INCREMENT PRIMARY KEY
);
创建子表( subId 主键自增,同时包含 id 的外键约束):
sql
Copy code
CREATE TABLE sub_table (
subId INT AUTO_INCREMENT PRIMARY KEY,
id INT,
FOREIGN KEY (id) REFERENCES main_table(id) ON DELETE CASCADE ON UPDATE CASCADE
);
插入数据:
首先,插入主表数据:

sql
Copy code
INSERT INTO main_table VALUES (1), (2);
然后,插入子表数据( subId 会自动增长,而 id 将来自于主表的 id ):

sql
Copy code
INSERT INTO sub_table (id) VALUES (1), (1), (1), (2), (2), (2), (1);
这样,你可以在 InnoDB 引擎下建立主表和子表,并通过外键将它们关联起来。虽然 subId 并不会像 MyISAM 引擎中设置联合主键那样自动增长,但通过使用自增主键和外键,你可以实现类似的目标数据库形式。


不过我的建议是这种操作最好不要放到数据库直接查一下不就完事了..这东西有索引而且是数字定位很快的
monster1priest
342 天前
@iosyyy 感谢🙏

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/957953

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX