首页 > 数据库 > mysql教程 > MySQL如何实现多列自增主键?

MySQL如何实现多列自增主键?

Mary-Kate Olsen
发布: 2024-12-11 10:43:10
原创
640 人浏览过

How to Implement a Multiple-Column Auto-Increment Primary Key in MySQL?

使用多列自动递增主键和辅助列自动递增

在具有共享结构的数据库中维护数据完整性可以是至关重要的。作为策略的一部分,您正在考虑使用两列作为联合主键,一列是数据库标识符,另一列是表键。但是,您希望将表键设置为根据数据库标识符自动递增。

对于 MySQL,您可以根据所使用的存储引擎进行选择。如果您使用 MyISAM,则可以利用其在多列索引中的辅助列上指定 AUTO_INCREMENT 的功能。

要了解其工作原理,请考虑以下示例:

CREATE TABLE animals (
    grp ENUM('fish','mammal','bird') NOT NULL,
    id MEDIUMINT NOT NULL AUTO_INCREMENT,
    name CHAR(30) NOT NULL,
    PRIMARY KEY (grp,id)
) ENGINE=MyISAM;
登录后复制

在此表中,grp 和 id 列构成复合主键。 id 列是自动递增的,但其值计算会考虑前缀(在本例中为 grp 值)。

将此概念应用于您的场景:

CREATE TABLE mytable (
    table_id MEDIUMINT NOT NULL AUTO_INCREMENT,
    database_id MEDIUMINT NOT NULL,
    other_column CHAR(30) NOT NULL,
    PRIMARY KEY (database_id,table_id)
) ENGINE=MyISAM;
登录后复制

插入示例数据:

INSERT INTO mytable (database_id, other_column) VALUES
    (1,'Foo'),(1,'Bar'),(2,'Baz'),(1,'Bam'),(2,'Zam'),(3,'Zoo');
登录后复制

查询table:

SELECT * FROM mytable ORDER BY database_id,table_id;
登录后复制

这将返回按database_id分组的结果,每个组的table_id值自动递增。

以上是MySQL如何实现多列自增主键?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板