首页 >数据库 >mysql教程 >多列主键如何自动增加一列?

多列主键如何自动增加一列?

Barbara Streisand
Barbara Streisand原创
2024-12-13 08:11:10717浏览

How Can I Auto-Increment a Column in a Multi-Column Primary Key?

在多列主键上使用自动增量

维护跨数据库的数据完整性可能具有挑战性。通过利用两列作为复合主键,可以确保每行的唯一性。但是,在自动递增其中一列时,必须考虑如何管理行的唯一标识。

在 MyISAM 中使用 AUTO_INCRMENT

MyISAM 存储引擎允许您在多列索引中的非主列上指定 AUTO_INCRMENT。自动增量值计算为 MAX(auto_increment_column) 1,其中匹配给定前缀。这在将数据组织成有序组时特别有用。

用法示例:

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;

在此示例中,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');
SELECT * FROM mytable ORDER BY database_id,table_id;

+----------+-------------+--------------+
| table_id | database_id | other_column |
+----------+-------------+--------------+
|        1 |           1 | Foo          |
|        2 |           1 | Bar          |
|        3 |           1 | Bam          |
|        1 |           2 | Baz          |
|        2 |           2 | Zam          |
|        1 |           3 | Zoo          |
+----------+-------------+--------------+

如您所见,table_id 会针对每个唯一的database_id 自动递增。这确保了每行的唯一性以及基于database_id的有序分组。

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn