V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
MySQL 5.5 Community Server
MySQL 5.6 Community Server
Percona Configuration Wizard
XtraBackup 搭建主从复制
Great Sites on MySQL
Percona
MySQL Performance Blog
Severalnines
推荐管理工具
Sequel Pro
phpMyAdmin
推荐书目
MySQL Cookbook
MySQL 相关项目
MariaDB
Drizzle
参考文档
http://mysql-python.sourceforge.net/MySQLdb.html
monster1priest
V2EX  ›  MySQL

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

  •  
  •   monster1priest · 2023-07-19 13:07:38 +08:00 · 1059 次点击
    这是一个创建于 521 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

    2 条回复    2023-07-19 14:18:37 +08:00
    iosyyy
        1
    iosyyy  
       2023-07-19 14:13:11 +08:00   ❤️ 1
    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
        2
    monster1priest  
    OP
       2023-07-19 14:18:37 +08:00
    @iosyyy 感谢🙏
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2207 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 01:40 · PVG 09:40 · LAX 17:40 · JFK 20:40
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.